我有一个带有 KeyListener 的 JTextField。在 keyPressed 内部,我检查是否输入了按下的键。在此之后,我想在内部类中调用不同的事件处理程序(内部类仅包含此处理程序)。
这就是我所拥有的,但显然:new handler() 似乎没有启动内部类处理程序。
关键事件处理程序:
public void keyPressed(KeyEvent k) {
if(k.getKeyCode()==KeyEvent.VK_ENTER){
new handler();
}
}
内部类事件处理器:
public class handler implements ActionListener{
public void actionPerformed(ActionEvent e) {
int red = Integer.parseInt(roodT.getText());
int groen = Integer.parseInt(groenT.getText());
int blauw = Integer.parseInt(blauwT.getText());
if(red>255){
red = 255;
} else if (red < 0){
red = 0;
}
if(groen>255){
groen = 255;
} else if (groen < 0){
groen = 0;
}
if(blauw>255){
blauw = 255;
} else if (blauw < 0){
blauw = 0;
}
inhoud.setBackground(new Color(red, groen, blauw));
}
这是我第一次在这里发帖,如果这个问题的格式不正确,我们深表歉意。
最佳答案
对于 JTextField
,您可以直接将您的 handler
添加到其中:
JTextField someField = new JTextField(20);
someField.addActionListener(new handler());
ActionListener
在按下 ENTER
时自动触发。
对于所有 JTextComponent
,不使用 KeyListener
,而是使用 DocumentListener
和 DocumentFilter
。
对于其他 JComponent
使用 Swing KeyBindings .
在所有情况下,请远离作为低级 API 的 KeyListener
。
关于java - 如何在事件处理程序中触发内部类事件处理程序(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913655/