博為峰小博老師:
JComboBox的事件處理也可分為兩種嫂沉,一種是取得用戶選取的項(xiàng)目;另一種是用戶在JComboBox上自行輸入完畢后按下回車(chē)鍵球凰,運(yùn)行相對(duì)應(yīng)的工作强霎。對(duì)于第一種事件的處理,可使用ItemListener實(shí)現(xiàn)陡鹃。對(duì)于第二種事件的處理磷蛹,可使用ActionListener實(shí)現(xiàn)吮旅。
下面將給出一個(gè)實(shí)例,該實(shí)例主要通過(guò)選擇下拉列表框中的數(shù)字來(lái)改變字體的大小味咳,其其體的程序代碼如下所示:
publicclassBWFimplementsItemListener,ActionListener{
String[]fontsize={"12","14","16","18","20","22","24","26","28"};
StringdefaultMessage="請(qǐng)選擇或直接輸入文字大小庇勃。";
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("你輸入的值不是整數(shù)匪凉,請(qǐng)從新輸入!");
}
}
publicvoiditemStateChanged(ItemEvente) {
if(e.getStateChange()==ItemEvent.SELECTED){
intfontsize=0;
try{
fontsize=Integer.parseInt((String)e.getItem());
label.setText("Swing目前字體大修嗝省:"+fontsize);
}catch(Exceptione1){
}
}
}
}