博为峰小博老师:
JComboBox的事件处理也可分为两种,一种是取得用户选取的项目;另一种是用户在JComboBox上自行输入完毕后按下回车键,运行相对应的工作。对于第一种事件的处理,可使用ItemListener实现。对于第二种事件的处理,可使用ActionListener实现。
下面将给出一个实例,该实例主要通过选择下拉列表框中的数字来改变字体的大小,其其体的程序代码如下所示:
publicclassBWFimplementsItemListener,ActionListener{
String[]fontsize={"12","14","16","18","20","22","24","26","28"};
StringdefaultMessage="请选择或直接输入文字大小。";
Fontfont=null;
JComboBoxcombo=null;
JLabellabel=null;
publicBWF(){
JFramejf=newJFrame("博为峰教育");
ContainercontentPane=jf.getContentPane();
contentPane.setLayout(newGridLayout(2, 1));
label=newJLabel("Swing",JLabel.CENTER);
font=newFont("SansSerif", Font.PLAIN, 12);
label.setFont(font);
combo=newJComboBox(fontsize);
combo.setBorder(BorderFactory.createTitledBorder("选择你要的文字大小?"));
combo.setEditable(true);
ComboBoxEditoreditor=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(newWindowAdapter() {
publicvoidwindowClosing(WindowEvente) {
System.exit(0);
}
});
}
publicstaticvoidmain(String[]args) {
newBWF();
}
publicvoidactionPerformed(ActionEvente) {
booleanisaddItem=true;
intfontsize=0;
Stringtmp=(String)combo.getSelectedItem();
try{
fontsize=Integer.parseInt(tmp);
for(inti=0;i
isaddItem=false;
break;
}
if(isaddItem){
combo.insertItemAt(tmp, 0);
}
font=newFont("SansSerif", Font.PLAIN,fontsize);
label.setFont(font);
}catch(Exceptione1){
combo.getEditor().setItem("你输入的值不是整数,请从新输入!");
}
}
publicvoiditemStateChanged(ItemEvente) {
if(e.getStateChange()==ItemEvent.SELECTED){
intfontsize=0;
try{
fontsize=Integer.parseInt((String)e.getItem());
label.setText("Swing目前字体大小:"+fontsize);
}catch(Exceptione1){
}
}
}
}