Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作;输入“;键的行为类似于JFrame上的Submit_Java_Swing_Client Server_Jframe_Key Bindings - Fatal编程技术网

Java 如何制作;输入“;键的行为类似于JFrame上的Submit

Java 如何制作;输入“;键的行为类似于JFrame上的Submit,java,swing,client-server,jframe,key-bindings,Java,Swing,Client Server,Jframe,Key Bindings,我正在构建一个客户机/服务器应用程序。 我想让用户在身份验证框架上更容易 我想知道如何使enter键将登录名和密码提交到数据库(启动操作)?向密码字段组件添加一个ActionListener: 下面的代码生成此屏幕截图: public static void main(String[] args) throws Exception { JFrame frame = new JFrame("Test"); frame.setLayout(new GridLayout(2, 2))

我正在构建一个客户机/服务器应用程序。 我想让用户在身份验证框架上更容易


我想知道如何使enter键将登录名和密码提交到数据库(启动操作)?

向密码字段组件添加一个
ActionListener

下面的代码生成此屏幕截图:

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);
}


一种方便的方法依赖于,如本文所示,如中所述


为什么ActionListener只添加到密码字段?如果用户返回到名称字段并输入?@camickr:?有两个动作听众?而且,这只是一个如何使用它们的示例。将其重新分解为一个通用的
操作可能会很有用。还考虑<代码> jPaseWordField。OOP,错过了第二个动作,因为问题是关于如何在回车键上提交数据(而不是如何编写ActuiListor)。我试图强调动作属于按钮,而不是文本字段。正常的用户界面是有一个(或两个)按钮来处理数据。+1,我喜欢将ActionListener添加到按钮的解决方案,这样当按下enter键时,哪个文本字段有焦点就不重要了。
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);