【发布时间】:2011-09-23 06:22:35
【问题描述】:
我正在构建一个客户端/服务器应用程序。 我想让用户在身份验证框架上更容易。
我想知道如何使 enter-key 提交登录名和密码到数据库(触发操作)?
【问题讨论】:
标签: java swing client-server jframe key-bindings
我正在构建一个客户端/服务器应用程序。 我想让用户在身份验证框架上更容易。
我想知道如何使 enter-key 提交登录名和密码到数据库(触发操作)?
【问题讨论】:
标签: java swing client-server jframe key-bindings
一种方便的方法依赖于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);
【讨论】:
在密码字段组件中添加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);
}
【讨论】:
Action 可能会很有用。也可以考虑JPasswordField。