如何禁用选择文本字段的所有高光。
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();
}
}
当前代码也隐藏了内容... 有人帮忙吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
1)jtextField.selectAll();
Focus
是简单的异步,然后逻辑上这可能是
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();
不要使用Caret
,而不是使用Highlighter
,您也必须覆盖文档,I can't see reason to modify something
Caret
&的错误selection
3)JTextComponent
有Document / DocumentListener
答案 2 :(得分:0)
只需设置
jtextField.setSelectionEnd(0);在onFocusLost();
方法中答案 3 :(得分:0)
设置要使用的突出显示器。默认情况下,这将由UI设置 已安装。如果可以将其更改为自定义荧光笔 期望。 可以将荧光笔设置为null以禁用它 ....
textField.setHighlighter(null);