2

如何禁用选择 textfield 的所有亮点。

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

4 回答 4

2

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

setSelectedTextColor

设置选择颜色

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

于 2012-05-06T20:04:31.873 回答
1

刚设置

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

于 2012-05-07T06:08:30.213 回答
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) 因为JTextComponent那里Document / DocumentListener

于 2012-05-06T21:03:59.303 回答
0

这可以通过使用setHighlighter(null)删除荧光笔来更轻松地完成

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

textField.setHighlighter(null);
于 2017-02-17T10:27:06.227 回答