禁用选择jTextfield的所有高亮显示

时间:2012-05-06 19:57:01

标签: 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(JTextField jtextField) {

        this.jtextField = jtextField;
    }

    @Override
    public void focusGained(FocusEvent e) {

        jtextField.selectAll();

    }

    @Override
    public void focusLost(FocusEvent e) {

        jtextField.getHighlighter().removeAllHighlights();
    }

}

当前代码也隐藏了内容... 有人帮忙吗?

4 个答案:

答案 0 :(得分:2)

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

setSelectedTextColor

setSelectionColor

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

答案 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();

3)JTextComponentDocument / DocumentListener

答案 2 :(得分:0)

只需设置

jtextField.setSelectionEnd(0);在onFocusLost();

方法中

答案 3 :(得分:0)

只需使用setHighlighter(null)

删除荧光笔即可轻松完成此操作
  

设置要使用的突出显示器。默认情况下,这将由UI设置   已安装。如果可以将其更改为自定义荧光笔   期望。 可以将荧光笔设置为null以禁用它 ....

textField.setHighlighter(null);