博为峰小博老师:
JComboBox的事件处理也可分为两种,一种是取得用户选取的项目;另一种是用户在JComboBox上自行输入完毕后按下回车键,运行相对应的工作。对于第一种事件的处理,可使用ItemListener实现。对于第二种事件的处理,可使用ActionListener实现。
下面将给出一个实例,该实例主要通过选择下拉列表框中的数字来改变字体的大小,其其体的程序代码如下所示:
public class BWF implements ItemListener,ActionListener{
String[] fontsize={"12","14","16","18","20","22","24","26","28"};
String defaultMessage="请选择或直接输入文字大小。";
Font font=null;
JComboBox combo=null;
JLabel label=null;
public BWF(){
JFrame jf=new JFrame("博为峰教育");
Container contentPane=jf.getContentPane();
contentPane.setLayout(new GridLayout(2, 1));
label=new JLabel("Swing",JLabel.CENTER);
font=new Font("SansSerif", Font.PLAIN, 12);
label.setFont(font);
combo=new JComboBox(fontsize);
combo.setBorder(BorderFactory.createTitledBorder("选择你要的文字大小?"));
combo.setEditable(true);
ComboBoxEditor editor=combo.getEditor();
combo.configureEditor(editor, defaultMessage);
combo.addItemListener(this);
combo.addActionListener(this);
contentPane.add(label);
contentPane.add(combo);
jf.pack();
jf.setVisible(true);
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new BWF();
}
public void actionPerformed(ActionEvent e) {
boolean isaddItem=true;
int fontsize=0;
String tmp=(String)combo.getSelectedItem();
try{
fontsize=Integer.parseInt(tmp);
for(int i=0;i<combo.getItemCount();i++){
isaddItem=false;
break;
}
if(isaddItem){
combo.insertItemAt(tmp, 0);
}
font=new Font("SansSerif", Font.PLAIN,fontsize );
label.setFont(font);
}catch(Exception e1){
combo.getEditor().setItem("你输入的值不是整数,请从新输入!");
}
}
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){
int fontsize=0;
try{
fontsize=Integer.parseInt((String)e.getItem());
label.setText("Swing 目前字体大小:"+fontsize);
}catch(Exception e1){
}
}
}
}