【发布时间】:2012-06-18 20:40:02
【问题描述】:
我在试图弄清楚为什么 KeyListener 无法完全执行时遇到了令人难以置信的沮丧。它一定是我不知道的 Java 语言。
我正在尝试使用 KeyListener 来捕捉用户通过“Enter”键将文本输入 JTextArea。当用户按下 Enter 键时,他们输入到 JTextArea 中的 String 通过.getText(); 保存,然后与另一个 String 进行比较,以查看它们是否匹配使用 .equalsIgnoreCase();,但程序似乎完全忽略了这批代码。 3 天来,我一直在尝试断断续续地找出我的错误,但什么都想不出来。
以下是我的代码示例。在这个例子中,我试图让程序在用户输入单词“quit”的情况下执行System.exit(0);。任何帮助表示赞赏。我真的希望我没有忘记一些愚蠢的事情。
playerInput.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
String test = playerInput.getText();
String quit = "quit";
playerInput.setText("");
if(test.equalsIgnoreCase(quit))
System.exit(0);
}
}
public void keyPressed(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
});
【问题讨论】:
-
你在调试器中运行过吗?什么是“测试”?
-
你可以试试
String test = playerInput.getText().trim(); -
您能否在
keyReleased方法的开头放置一个println语句以确保该方法实际被调用?如果不是,我敢打赌,您在使用 Focus Subsystem 时遇到了问题。 -
@ametren 调试器返回 test 为 null,这绝对是我问题的根源。
-
在这种情况下,我真的很惊讶您在 test.equalsIgnoreCase(quit) 上没有收到 NullPointerException
标签: java string swing keylistener