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

时间:2015-01-30 22:46:09

标签: 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");  
    }
}

1 个答案:

答案 0 :(得分:1)

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

基本代码如下:

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