Enter键的Java Editable JCombobox Keylistener事件 [英] Java Editable JCombobox Keylistener event for Enter key

查看:120
本文介绍了Enter键的Java Editable JCombobox Keylistener事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有可编辑的JCombobox,并为组合框编辑器组件添加了keylistener. 当用户按下"Enter键"并且可编辑组合框上没有文本时,我需要使用JOptinoPane显示消息框.我已经在keyrelease事件中完成了必要的代码,并且按预期显示了消息.

I have editable JCombobox and I added keylistener for combobox editor component. When user press 'Enter key' and if there is no text on the editable combobox I need to display message box using JOptinoPane. I have done necessary code in keyrelease event and it displays message as expected.

问题是,当我们收到消息框时,如果用户按下JOptionPane的确定"按钮上的Enter键,则组合框编辑器keyevent再次触发.因此,当用户在消息框上按Enter键时,JoptionPane会连续显示.

Problem is, when we get message box and if user press enter key on 'OK' button of JOptionPane, combobox editor keyevent fires again. Because of this, when user press Enter key on message box, JoptionPane displays continuously.

有什么办法解决这个问题吗?

Any idea how to solve this?

请注意,我不能为此使用Action侦听器.

Note that I can't use Action listener for this.

推荐答案

请检查此代码是否对您有帮助!

Please check if this code helps you!!!

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

大多数人因为这种铸造而感到困难.

Most people find it difficult because of this casting.

这篇关于Enter键的Java Editable JCombobox Keylistener事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆