如何使“输入”键表现为像JFrame上的提交

时间:2011-09-23 06:22:36

标签: java swing client-server jframe key-bindings

我正在构建一个客户端/服务器应用程序。 我希望在身份验证框架上为用户提供便利。

我想知道如何让输入 -key将登录名和密码提交给数据库(触发操作)?

2 个答案:

答案 0 :(得分:7)

一种方便的方法依赖于setDefaultButton(),如example所示,并在How to Use Key Bindings中提及。

JFrame f = new JFrame("Example");
Action accept = new AbstractAction("Accept") {

    @Override
    public void actionPerformed(ActionEvent e) {
        // handle accept
    }
};
private JButton b = new JButton(accept);
...
f.getRootPane().setDefaultButton(b);

答案 1 :(得分:4)

ActionListener添加到密码字段组件:

以下代码生成此屏幕截图:

screenshot

public static void main(String[] args) throws Exception {

    JFrame frame = new JFrame("Test");
    frame.setLayout(new GridLayout(2, 2));

    final JTextField user = new JTextField();
    final JTextField pass = new JTextField();

    user.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            pass.requestFocus();
        }
    });
    pass.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String username = user.getText();
            String password = pass.getText();

            System.out.println("Do auth with " + username + " " + password);
        }
    });
    frame.add(new JLabel("User:"));
    frame.add(user);

    frame.add(new JLabel("Password:"));
    frame.add(pass);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}