JComboBox第一次选取时为什么没有响应itemStateChanged事件。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JComboBox5 implements ItemListener{
String[] fontsize ={"12","14","13"};
String defaultMessage ="please select";
Font font =null;
JComboBox combo =null;
JLabel label =null;
public JComboBox5(){
JFrame f =new JFrame("jcombobox");
Container contentPane =f.getContentPane();
contentPane.setLayout(new GridLayout(2,1));
label =new JLabel("swing",JLabel.CENTER);
label.setFont(font);
combo =new JComboBox(fontsize);
combo .setBorder(BorderFactory.createTitledBorder("please choose"));
combo.setEditable(true);
ComboBoxEditor editor =combo.getEditor();
combo.configureEditor(editor,defaultMessage);
combo.addItemListener(this);
contentPane.add(label);
contentPane.add(combo);
f.pack();
f.show();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new JComboBox5();
}
public void itemStateChanged(ItemEvent e){
if(e.getStateChange()==ItemEvent.SELECTED){
int fontsize =0;
try{
fontsize =Integer.parseInt((String)e.getItem());
label.setText("swing size:"+fontsize);
}catch(NumberFormatException ne){}
}
}
}
-------------
我碰到的问题是,当程序启动后,第一次选择“12”时,不会触发itemStateChanged,选择了“14”后再回过头来选择“12”就正常了。为什么会这样?