我有可编辑的JCombobox,我为combobox编辑器组件添加了keylistener。当用户按回车键时,如果可编辑的combobox上没有文本,我需要使用JOptinoPane显示消息框。我在keyrelease事件中做了必要的代码,它按预期显示消息。
问题是,当我们收到消息框时,如果用户在JOptionPane的“确定”按钮上按回车键,组合框编辑器keyevent会再次触发。因此,当用户在消息框上按Enter键时,JoptionPane会连续显示。
知道怎么解决吗?
请注意,我不能为此使用Action侦听器。
请检查此代码是否对您有帮助!!!
JFrame frame = new JFrame("Welcome!!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComboBox cmb = new JComboBox();
cmb.setEditable(true);
cmb.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent event) {
if (event.getKeyChar() == KeyEvent.VK_ENTER) {
if (((JTextComponent) ((JComboBox) ((Component) event
.getSource()).getParent()).getEditor()
.getEditorComponent()).getText().isEmpty())
System.out.println("please dont make me blank");
}
}
});
frame.add(cmb);
frame.setLocationRelativeTo(null);
frame.setSize(300, 50);
frame.setVisible(true);
大多数人觉得很难,因为这个铸造。
我们需要在组合框用于服务编辑的组件上添加一个键侦听器。
JTextComponent editor = (JTextComponent) urCombo.getEditor().getEditorComponent();
editor.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent evt) {
// your code
}
});
希望这段代码有帮助。
Note that I can't use Action listener for this.
这不会让我有任何意义,然后使用ItemListener
Any idea how to solve this?
>
永远不要将KeyListener用于Swing JComponents
,请使用(注意我不能为此
使用Action listener。)KeyBindings,
注意ENTER键
是在中为
默认情况下,必须从按下JComboBox
实现的APIENTER键
覆盖此操作