有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我读过this,但这不是我想做的。我只想突出文本,而不是整个内容

以下是我的猜测: *不是实际的代码,因为这是一个逻辑问题

第1步-我需要一个FocusListener或一个MouseStener

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

第二步-这是很粗糙的部分,我真的不知道怎么做

第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) 个答案

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