java - 突出显示 JComboBox 中的文本,然后在用户输入内容时将其删除

标签 java swing text actionlistener jcombobox

我正在尝试制作一个可以接受用户输入的“JComboBox”,但这不是问题。我希望如果“JComboBox”失去焦点然后重新获得焦点,文本将突出显示。然后,如果用户输入任何内容,它就会删除原位文本并用新输入替换它。

我已阅读 this 但这不是我想要做的。我只想突出显示文本而不是整个内容。

这是我的猜测: *不是实际代码,而是逻辑问题

第 1 步 - 我需要 FocusListener 或 MouseListener

public class ComboEvent implements MouseListener {
    @Override
    public void onMouseClick(MouseEvent e) {
        highLightText();
    }
}

第 2 步 - 这是最困难的部分,我真的不知道该怎么做...

第 3 步 - 然后在输入内容时删除文本。我再次不太确定如何完美地实现这一目标。

public class EraserEvent implements KeyListener {

    @Override
    public void keyPressed(KeyEvent e) {
        char t = (char) e.getSource();
        //I know that there is know setText function in a JComboBox
        comboBox.setText("t");  
    }
}

最佳答案

您需要将逻辑添加到组合框的编辑器中,该组合框恰好是一个文本字段。

基本代码如下:

    ComboBoxEditor editor = comboBox.getEditor();
    JTextField textField = (JTextField)editor.getEditorComponent();
    textField.addFocusListener( new FocusListener()
    {
        public void focusGained(final FocusEvent e)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    JTextField textField = (JTextField)e.getSource();
                    textField.selectAll();
                }
            });
        }

        public void focusLost(FocusEvent e) {}
    });

关于java - 突出显示 JComboBox 中的文本,然后在用户输入内容时将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245893/

相关文章:

java - Vaadin 布局间距

java - 关于 MyBatis resultMaps 的澄清

java - 数字格式问题,新手项目

java - 如何检测鼠标(指针)何时位于 JList 中的文本上?

java - 其他 JFrame 中的 JTextArea 显示实时控制台输出

Android创建半可调整大小的框

android - 如何在 Android 中为 LED 文本滚动条创建背景?

java - 将 volatile 关键字与包装类一起使用

text - 如何使用 watir 单击具有特定文本的链接元素?

java - 如何将 JTextField[][] 作为参数传递给动态加载的 java 类方法?