3

KeyListenerが完全に実行されない理由を理解しようとすると、非常にイライラする時間があります。それは私が気づいていないJavaの何かであるに違いありません。

KeyListenerを使用して、「Enter」キーを使用してJTextAreaにテキストを入力しているユーザーをキャッチしようとしています。ユーザーがEnterキーを押すと、JTextAreaに入力した文字列が保存され、.getText();別の文字列と比較されて、を使用して一致するかどうかが確認されます.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を使用して、ドキュメントに保持されているテキストに「quit」という単語が含まれているかどうかを確認してみませんか。

于 2012-06-18T20:49:49.897 に答える
0

ユーザーは「quit」または「quit\n\r」と入力していますか...私のドリフトが発生した場合。おそらく、に余分な空白がありJTextAreaます。

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

于 2012-06-18T20:46:24.353 に答える