簡體   English   中英

KeyListener中的Java字符串比較失敗

[英]Java String comparison fails within KeyListener

我有一個令人難以置信的令人沮喪的時間試圖弄清楚為什么KeyListener不會完全執行。 它必須是Java中我不知道的東西。

我正在嘗試使用KeyListener來捕獲用戶通過“Enter”鍵將文本輸入JTextArea。 當用戶按Enter鍵時,他們輸入JTextArea的String通過.getText();保存.getText(); 然后將其與另一個String進行比較,以查看它們是否匹配使用.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) {}
        }); 

這應該工作:

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

為什么不使用DocumentListener並在文檔持有的文本包含單詞“quit”時簽入。

用戶輸入“退出”或“退出\\ n \\ r”......如果你得到我的漂移。 也許JTextArea有額外的空格。

試試test.trim().equalsIgnoreCase(quit)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM