Joe*_*Joe 5 java swing enter keylistener jcombobox
我有可编辑的JCombobox,我为组合框编辑器组件添加了keylistener.当用户按下"Enter键"并且可编辑组合框上没有文本时,我需要使用JOptinoPane显示消息框.我已经在keyrelease事件中完成了必要的代码,它会按预期显示消息.
问题是,当我们收到消息框并且如果用户在JOptionPane的"确定"按钮上按回车键,组合框编辑器keyevent再次触发.因此,当用户在消息框上按Enter键时,JoptionPane会持续显示.
不知道怎么解决这个问题?
请注意,我不能使用Action侦听器.
Cha*_*ara 12
请检查此代码是否对您有所帮助!
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);
Run Code Online (Sandbox Code Playgroud)
由于这种铸造,大多数人发现很难.
Note that I can't use Action listener for this.
Run Code Online (Sandbox Code Playgroud)
这对我来说没有任何意义,然后使用 ItemListener
Any idea how to solve this?
Run Code Online (Sandbox Code Playgroud)
永远不要使用KeyListene r Swing JComponents,而是使用 ( Note that I can't use Action listener for this.) KeyBindings,
默认情况下,通知ENTER key是为JComboBoxin实现API的,必须覆盖此操作ENTER key pressed
| 归档时间: |
|
| 查看次数: |
14952 次 |
| 最近记录: |