2012-05-06 48 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);