突出显示 JComboBox 中的文本,然后在用户输入内容时将其删除
Highlight text in JComboBox then erase it if user input something
我正在尝试制作一个可以接受用户输入的 '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) {}
});
我正在尝试制作一个可以接受用户输入的 '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) {}
});