2012-05-06 50 views
2

如何禁用選擇文本字段的所有高亮。禁用選擇jTextfield的所有亮點

import java.awt.event.FocusEvent; 
import java.awt.event.FocusListener; 

import javax.swing.JTextField; 

public class CustomFocusListener implements FocusListener { 

    JTextField jtextField; 

    public CustomFocusListener(JTextField jtextField) { 

     this.jtextField = jtextField; 
    } 

    @Override 
    public void focusGained(FocusEvent e) { 

     jtextField.selectAll(); 

    } 

    @Override 
    public void focusLost(FocusEvent e) { 

     jtextField.getHighlighter().removeAllHighlights(); 
    } 

} 

當前的代碼只是隱藏內容也... 人誰幫忙?

回答

2

要更改JTextField的文本顏色和選擇顏色,你可以使用這兩種方法:

setSelectedTextColor

setSelectionColor

但我不建議這樣做,如果你打算使用不同的外觀和感覺。

+0

我只是用jtextField.setSelectionEnd(0);它正常工作,謝謝你... –

+0

@NoufalPanolan爲什麼你在第一個地方調用selectAll()呢?我一定是誤解了一些東西。 –

+0

當我遍歷textfields時,我想選擇所有焦點gaind和焦點丟失時取消所有選擇。 –

1

1)jtextField.selectAll();

Focus簡單asyncronous,那麼在邏輯上,這可能是

SwingUtilities.invokeLater(new Runnable() { 

    @Override 
    public void run() { 
     JTextField.selectAll(); 
    } 
}); 

,但以這種形式

SwingUtilities.invokeLater(new Runnable() { 

    @Override 
    public void run() { 
     JTextField.setText(JTextField.getText()); 
     JTextField.selectAll(); 
     JTextField..requestFocus(); //requestFocusInWindow() I can't see diff 
    } 
}); 

2)jtextField.getHighlighter().removeAllHighlights();

3)JTextComponentDocument/DocumentListener

+0

在這裏閱讀,[爲什麼requestFocusInWindow()over requestFocus()](http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html #requestFocus())。 Java Docs的注意事項「請注意,不鼓勵使用此方法,因爲它的行爲是依賴於平臺的,相反,我們推薦使用requestFocusInWindow(boolean)。」 –

0

Just set

jtextFi eld.setSelectionEnd(0);在方法onFocusLost();

0

這可以通過只是setHighlighter(null)

去除熒光筆更容易地進行設置要使用熒光筆。默認情況下,這將通過安裝的UI 進行設置。如果需要 ,可將其更改爲自定義熒光筆。 熒光筆可以被設置爲空以禁用它 ....

textField.setHighlighter(null);