【问题标题】:keyListener on JFrame not reactingJFrame上的keyListener没有反应
【发布时间】:2013-10-29 19:42:22
【问题描述】:

我希望当用户按下键盘上的enter 按钮时,程序应该像单击ok 按钮时一样运行。

我的代码:

public class T3 extends JFrame implements ActionListener {

JButton okBtn;

public T3() {
    this.setFocusable(true);
    this.addKeyListener(new KeyListener() {
        @Override
        public void keyTyped(KeyEvent e) {
            // if enter button is pressed in keyboard, then show "Enter Button pressed" message
        }

        @Override
        public void keyPressed(KeyEvent e) {
            // if enter button is pressed in keyboard, then show "Enter Button pressed" message
        }

        @Override
        public void keyReleased(KeyEvent e) {
            //To change body of implemented methods use File | Settings | File Templates.
        }
    });
    add(createForm(), BorderLayout.NORTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 500);
    setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new T3();
        }
    });
}

public JPanel createForm() {
    JPanel panel = new JPanel();
    okBtn = new JButton("Ok");
    okBtn.addActionListener(this);
    panel.add(okBtn);
    return panel;
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() == okBtn) {
        System.out.println("Enter Button pressed");
    }
}
}

现在,不要反应!

【问题讨论】:

标签: java swing jframe keylistener


【解决方案1】:

当子组件具有焦点时,KeyListeners 不适用于容器。您将需要一个应用程序范围的 KeyListener。看看这个 SO 问题:

Setting up application wide Key Listeners

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2013-03-05
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多