`

java swing 下拉框增加回车事件

阅读更多

用java swing做了一个密码管理系统,如下图:

 最下面有一个输入框,是用于搜索的,有三种搜索方式:

(1)通过Title

(2)通过username

(3)通过description

在下拉框中选择。现在的需求是

在输入框中输入要搜索的关键字后,选择下拉框,然后直接回车就进行搜索(对下拉框回车触发【search】按钮单击事件)。

说明:下拉框JComboBox typeComboBox ,搜索按钮 JButton searchBtn

刚开始使用如下代码:

typeComboBox.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				searchBtn.doClick();
			}
		});

 但是测试之后发现并不是响应下拉框的回车事件,而是下拉框的单击事件。

 

最后在 http://zhidao.baidu.com/question/233793038.html 上找到了回车事件实现的方法:

typeComboBox = new JComboBox();
		searchPanle.add(typeComboBox);
		typeComboBox.addItem(combobox_title);
		typeComboBox.addItem(combobox_desc);
		typeComboBox.addItem(combobox_username);
		typeComboBox.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
					searchBtn.doClick();
				}
			}
		});

 作者:1287789687@qq.com

  • 大小: 129.7 KB
1
0
分享到:
评论
2 楼 animamihong 2014-07-24  
public class JComboBoxPopupMenuTest {

        public static void main(String[] args) {
                JFrame jf = new JFrame("JComboBox Test");
                jf.setSize(200, 120);
                final JComboBox jcb = new JComboBox(new String[] { "1", "2", "3" });
                jf.getContentPane().add(jcb, BorderLayout.NORTH);
                jcb.setEditable(true);
                final JPopupMenu jpm = new JPopupMenu();
                jpm.add(new JMenuItem("Select Me!"));
                jpm.add(new JMenuItem("Don't Select Me!"));
                jpm.setSize(10, 30);
                jcb.getEditor().getEditorComponent().addMouseListener(
                                new MouseAdapter() {
                                        public void mouseReleased(MouseEvent evt) {
                                                System.out.println("Mouse Event Caught");
                                                if (SwingUtilities.isRightMouseButton(evt)) {
                                                        System.out.println("Right Click");
                                                        jpm
                                                                        .show(evt.getComponent(), evt.getX(), evt
                                                                                        .getY());
                                                }
                                        }

                                });
                jf.show();
                jcb.addKeyListener(new KeyAdapter() { 
                    @Override 
                    public void keyPressed(KeyEvent e) { 
                        if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
                        System.out.println("ssssssssssssssssssssss");
                        } 
                    } 
                }); 
        }
}

为什么下拉框的回车事件不起作用
1 楼 sosojustdo 2013-11-04  
JavaSwing的确落伍了点,包括实现复杂度以及面临数据量大高并发线程安全等问题制约。楼主学习精神还是值得称赞的。

相关推荐

Global site tag (gtag.js) - Google Analytics