[英]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.