import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class KeyEventDemo extends JFrame 
{
    JTextField tf;;
JComboBox jcb;

    public KeyEventDemo()
    {
     String[] str = new String[]{"中国","美国","日本"};
     JComboBox jcb = new JComboBox(str);
    
     tf = new JTextField("",10);
    
        Container c = this.getContentPane();
        c.setLayout(new FlowLayout());
        //把文本域组件加入到框架窗口中
        c.add(tf);
        c.add(jcb);
        
        jcb.addKeyListener(new KeyListener()
        {
         //键盘按下事件
        public void keyPressed(KeyEvent e)
        {
              JComboBox jcb = (JComboBox)e.getSource();
                         char ch = e.getKeyChar();
                         
                         if(ch == KeyEvent.VK_ENTER)
                         {
                             
                             jcb.setPopupVisible(true);
                             jcb.showPopup();
                         }
        }
        
        //键盘释放事件
        public void keyReleased(KeyEvent e) 
        {
        }
        
        //键盘中的非系统键
        public void keyTyped(KeyEvent e) 
        {
        }
        
        });
    }
    //程序的入口方法
    public static void main( String[] args ) 
    {
        KeyEventDemo frame=new KeyEventDemo(); 
        frame.setSize(300,300);
        frame.setVisible(true);  
    }
}
以上JAVA GUI程序在执行时,我想用键盘的回车键控制组合框 自动下拉下来,一直都无从实现,请高人指点 指正!!!

解决方案 »

  1.   

    你把VK_ENTER换成别的键,比如VK_E,你就会发现按下E后可以弹出JComboBox的下拉选项.而你接着选中一个选项后,按下Enter后就确定了那个选项,也许是Enter键本身就被默认为是下拉框选项"确定"并收起下拉框的意思,而不能触发showPopup()动作.
    你可以这样想,如果Enter键可以触发弹出下拉框,那么当你弹出下拉框通过上下键选择一个选项再次按下Enter键,此时编译器是该继续弹出下拉框还是选定这个选项并收起下拉框呢?
      

  2.   

    二楼说的对!本来快捷键就应当是功能键+字符键,enter键有特殊用途,不宜作为常规字符键使用。