我有一个JTextField,上面挂有KeyListener。在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,请使用DocumentListenerDocumentFilter

对于其他JComponent,请使用Swing KeyBindings

在所有情况下,请远离低级API KeyListener

关于java - 如何在事件处理程序(JAVA)中触发内部类事件处理程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16913655/

10-16 12:44