Java 禁用选择jTextfield的所有突出显示

Java 禁用选择jTextfield的所有突出显示,java,swing,Java,Swing,如何禁用“选择文本的所有突出显示”字段 import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.JTextField; public class CustomFocusListener implements FocusListener { JTextField jtextField; public CustomFocusListener(JTextF

如何禁用“选择文本的所有突出显示”字段

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();
    }

}
当前代码也只是隐藏了内容。。。
任何有帮助的人?

要更改JTextField的文本颜色和选择颜色,可以使用以下两种方法:

但如果您打算使用不同的外观,我不建议您这样做。

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()

  • 不要玩插入符号,不要玩荧光笔,你也必须覆盖文档

  • 插入符号
&
选择有什么问题

3) 对于
JTextComponent
是否有刚刚设置的
Document/DocumentListener


jtextField.setSelectionEnd(0);在方法onFocusLost()中

只需将荧光灯用

设置要使用的荧光灯。默认情况下,这将由UI设置 安装好了。如果需要,可以将其更改为自定义荧光灯 想要的荧光灯可设置为空以禁用它


@NoufalPanolan那么为什么首先调用selectAll()?我一定是误会了什么。当我遍历文本字段时,我想选择“全部聚焦增益”,而“全部聚焦丢失时取消选择”。@NoufalPanolan好的,我现在得到你想要的了;您想重置所选文本。实际上,突出显示和选择是两件不同的事情。从视觉上看,它可能看起来很相似,但实际上一件事是选择文本(这会产生高亮显示),另一件事只是更改文本中一个或多个区域的默认前景色/背景色。这也可以从UIManager+1这里阅读。Java文档中的注释“注意,不鼓励使用此方法,因为其行为依赖于平台。相反,我们建议使用requestFocusInWindow(布尔值)。”
textField.setHighlighter(null);