java - 如何在事件处理程序中触发内部类事件处理程序(JAVA)

标签 java swing actionlistener jtextfield keylistener

我有一个带有 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,而是使用 DocumentListenerDocumentFilter

对于其他 JComponent 使用 Swing KeyBindings .

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

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

相关文章:

java - 如何使用 Hibernate Lucene Search 进行不区分大小写的排序?

java - 链表测试....返回类型问题

java - 穿过内部分隔符时会触发 MouseExited 事件吗?

java - 尝试理解已经制作的 JApplet 代码

java - 通过 JButton 访问存储的变量

java - 在 Eclipse 中,当所有 Java 源编译没有错误时,什么会导致 Package Explorer "red-x"错误图标?

java - 将文本与 Java Graphics 2d 对齐

java - 在 Java 中过滤组合框数据

java - 如何在 JFrame 中动态添加 JPanel?

Java: addActionListener();不工作