日期:2014-05-20  浏览次数:20614 次

JComboBox 当有下拉框出来的时候,不响应键盘事件, 如何做?
入题....期待高手回答

------解决方案--------------------
这是我以前学习时候做的练习,你看下,希望对你有帮助.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class PersonInfoRecorder extends JFrame implements ActionListener{
JLabel l1=new JLabel( "姓名 ");
JLabel l2=new JLabel( "性别 ");
JLabel l3=new JLabel( "年龄 ");
JLabel l4=new JLabel( " ");

JTextField tf1=new JTextField(7);
JTextField tf2=new JTextField(7);

JTextArea ta=new JTextArea(80,30);

JButton b=new JButton( "确定 ");

JComboBox cb=new JComboBox();

JPanel p=new JPanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();

PersonInfoRecorder(){
cb.addItem( "男 ");
cb.addItem( "女 ");
ta.setBackground(Color.cyan);
ta.setEditable(false);
p.setLayout(new BorderLayout());
p.add(p1,BorderLayout.NORTH);
p.add(p2,BorderLayout.CENTER);
p.add(p3,BorderLayout.SOUTH);
p1.add(l1);
p1.add(tf1);
p1.add(l2);
p1.add(cb);
p1.add(l3);
p1.add(tf2);
p1.add(b);
p2.add(ta);
p3.add(l4);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(p);
this.setTitle( "个人信息录入器 ");
this.setSize(400,200);
this.setVisible(true);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{

if(e.getSource().equals(b))
{
if(tf1.getText().length()==0)
{
l4.setText( "姓名不能为空! ");
ta.setText( " ");
}
else
{
ta.setText(tf1.getText()+ ", "+ cb.getSelectedItem() + ", "+tf2.getText());
l4.setText( " ");
}
}
}
public static void main(String[] args){
new PersonInfoRecorder();
}
}
------解决方案--------------------
JComboBox 实现ActionListener的时候在java1.5以前好象只响应鼠标事件,不响应键盘事件.在1.5好像已经可以响应键盘事件了.你如果想响应键盘事件的话可以用ItemListener,不要用ActionListener. JComboBox用ItemListener既响应鼠标又响应键盘.
------解决方案--------------------
同问 在java1.6 JComboBox里只有一个元素的时候 为什么选中唯一的元素用ActionListener不响应呢? 如果有2个或2个以上元素选其中任何一个就可以响应