我寫了一個代碼,以查找並在JTextArea
突出一個字,我打一個問題,我太累了,有頭痛,看看我的錯誤。 我有一個搜索欄(TextField
),在那裏我可以輸入一個單詞,並且該單詞在我的TextArea
中獲得熒光筆。問題是,當我按我的「ENTER」鍵,TextField
被取消,我必須再次點擊它來尋找下一個單詞。我錯過了什麼?JTextField。找到並突出顯示這個詞在JTextArea
findfieldpage1 = new JTextField();
findfieldpage1.setBounds(37, 295, 63, 24);
gtapage1.add(findfieldpage1);
findfieldpage1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
int code = evt.getKeyCode();
if(code == KeyEvent.VK_ENTER){
String find = findfieldpage1.getText().toLowerCase();
textpage1.requestFocusInWindow();
if (find != null && find.length() > 0) {
Document document = textpage1.getDocument();
int findLength = find.length();
try {
boolean found = false;
if (pos + findLength > document.getLength()) {
pos = 0;
}
while (pos + findLength <= document.getLength()) {
String match = document.getText(pos, findLength).toLowerCase();
if (match.equals(find)) {
found = true;
break;
}
pos++;
}
if (found) {
Rectangle viewRect = textpage1.modelToView(pos);
textpage1.scrollRectToVisible(viewRect);
textpage1.setCaretPosition(pos + findLength);
textpage1.moveCaretPosition(pos);
pos += findLength;
}
} catch (Exception exp) {
exp.printStackTrace();
}
}
}
}
});
如果你需要幫助,你必須提供一個[SSCCE(http://sscce.org)演示該問題。如果沒有這些,我們可以給你的最好建議是休息一下,然後用新鮮的眼睛看看。 –
通過取消選中你的意思是失去了焦點,或者裏面的文字沒有被選中? – rhobincu
@KevinWorkman我會按照你的意見,睡一覺。 – MrSilent