KeyListener中的Java字符串比较失败

时间:2012-06-18 20:40:02

标签: java string swing keylistener

我有一个非常令人沮丧的时间试图找出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) {}
        }); 

3 个答案:

答案 0 :(得分: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) {}
        }); 

答案 1 :(得分:3)

为什么不使用DocumentListener并在文档持有的文本中包含单词“quit”时签入。

答案 2 :(得分:0)

用户输入“退出”或“退出\ n \ r”......如果你得到我的漂移。也许JTextArea中有额外的空格。

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