3

我在试图弄清楚为什么 KeyListener 不能完全执行时遇到了令人难以置信的沮丧。它一定是我不知道的 Java 中的东西。

我正在尝试使用 KeyListener 来捕捉用户通过“Enter”键将文本输入到 JTextArea 中。当用户按下 Enter 键时,他们输入到 JTextArea 中的 String 被保存.getText();,然后与另一个 String 进行比较,以查看它们是否匹配 using .equalsIgnoreCase();,但程序似乎完全忽略了这批代码。3 天来,我一直在试图发现我的错误,但什么也想不出来。

下面是我的代码示例。在这个例子中,我试图让程序System.exit(0);在用户输入单词“quit”的情况下执行。任何帮助表示赞赏。我真的希望我没有忘记一些愚蠢的事情。

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

3 回答 3

3

这应该有效:

playerInput.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                if(e.getKeyCode()==KeyEvent.VK_ENTER) {
                    String test = playerInput.getText().replaceAll("\\r|\\n", "");
                    String quit = "quit";
                    playerInput.setText("");
                    if(test.equalsIgnoreCase(quit))
                        System.exit(0);
                }
            }
            public void keyPressed(KeyEvent e) {}
            public void keyTyped(KeyEvent e) {}
        }); 
于 2012-06-18T20:47:43.113 回答
3

如果文档包含的文本包含“退出”一词,为什么不使用 DocumentListener 并检查它。

于 2012-06-18T20:49:49.897 回答
0

用户是在输入“quit”还是“quit\n\r”……如果你明白我的意思。也许在JTextArea.

尝试test.trim().equalsIgnoreCase(quit)

于 2012-06-18T20:46:24.353 回答