我在文本输入中添加了一个KeyListener,它似乎没有注册我按Enter的事实,因为它甚至没有打印出文本值。有什么想法吗?
txtPort.addKeyListener(new KeyAdapter() {
public void KeyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
System.out.println(txtName.getText());
System.out.println(txtAddress.getText());
System.out.println(txtPort.getText());
if(txtName.getText().equals("") && txtAddress.getText().equals("") && txtPort.getText().equals("")) {
String name = txtName.getText();
String address = txtAddress.getText();
int port = Integer.parseInt(txtPort.getText());
login(name, address, port);
}
}
}
});
答案 0 :(得分:1)
不要使用KeyListener。
而只是向ActionListener
添加JTextField
。按下ActionListener
键时将调用Enter
。
答案 1 :(得分:0)
你正在使用& (按位AND)运算符。
见https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
你应该使用&& (逻辑AND)运算符。
见https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
要检查是否填写了字符串,请使用isEmpty方法。
if (((txtName.getText() != null) && !txtName.getText().isEmpty()) &&
((txtAddress.getText() != null) && !txtAddress.getText().isEmpty()) &&
((txtPort.getText() != null) && !txtPort.getText().isEmpty()))
答案 2 :(得分:0)
只需提交我的评论作为可能的答案。改变第一行:
lblPort.addKeyListener(new KeyAdapter() {
到
txtPort.addKeyListener(new KeyAdapter() {
我认为你将监听器连接到错误的控件,它永远不会触发。您稍后调用txtPort.GetText()
,因此这似乎是文本框控件的正确名称。