所以我一直在努力尝试在我的jTextFields中提取数据,这个错误信息不断弹出,指的是:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: calcu.turkey (<--my class) cannot be cast to java.awt.event.KeyListener
jTextField2.addKeyListener(new java.awt.event.KeyListener() {
@Override
public void keyTyped(KeyEvent ke) {
//To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyPressed(KeyEvent ke) {
//To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyReleased(KeyEvent ke) {
//To change body of generated methods, choose Tools | Templates.
}
});
jTextField2.addKeyListener((KeyListener) this);
jTextField2.setFont(new java.awt.Font("Times New Roman", 0, 10)); // NOI18N
jTextField2.setText("0");
getContentPane().add(jTextField2);
jTextField2.setBounds(250, 40, 70, 20);
最重要的是这一行:jTextField2.addKeyListener((KeyListener) this);
因为它将(KeyListener)视为错误。我想知道如何正确添加KeyListener,以便它在文本字段中获取数字。
答案 0 :(得分:4)
您不使用KeyListener。您很少需要这样做。有更好的API可供使用。
例如,在使用文字组件时,您可能会使用DocumentListener
(请参阅How to Write a Document Listener)或DocumentFilter
(请参阅Implementing a Document Filter)。
我想知道如何正确添加KeyListener以便它在文本字段中获取数字。
通常你会抓住一些不相关的事件上的数字。例如,您在表单上有一个“提交”按钮。然后在这种情况下,您将向该按钮添加一个ActionListener,然后在您想要提交表单时使用文本字段的getText()
方法。
另外,我在上面引用的Swing教程中有一节How to Write a Key Listener
。
答案 1 :(得分:2)
KeyListener
接口。您需要有类public class turkey implements KeyListener
之类的类声明,然后在您的类中需要实现KeyListener
接口定义的所有方法。KeyListener
(或任何JTextField
)使用JTextComponent
。使用DocumentListener
或DocumentFilter
(取决于您的用例)KeyListener
添加到文字字段中,然后又希望将您的班级实例添加为KeyListener
答案 2 :(得分:-1)
jTextField2.addKeyListener((KeyListener) this);
上述行是罪魁祸首。好像你的班级没有实施KeyListener
事实上,我认为您根本不需要该行,因为您已经通过执行KeyListener
jTextField2
附加到jTextField2.addKeyListener(new ...
在以下任何一种方法中,您可以使用ke.getKeyCode()或ke.getKeyChar()来检索已按下的键。
@Override
public void keyTyped(KeyEvent ke) {
//To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyPressed(KeyEvent ke) {
//To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyReleased(KeyEvent ke) {
//To change body of generated methods, choose Tools | Templates.
}