JavaGUI中的JComboBox的处理
JComboBox的事件處理
JComboBox的事件處理亦可分為兩種,一種是取得用戶選取的項目;另一種是用戶在JComboBox上自行輸入完畢后按下[Enter]鍵,
????運作相對應的工作。對于第一種事件的處理,我們使用ItemListener.對于第二種事件的處理,我們使用ActionListener.
這個范例用戶可以選取所要的字號,字號的變化會呈現在JLabel上,并可讓用戶自行輸入字體的大小。當用戶按下[Enter]鍵后?,若用戶輸入的值不在選項上時,此輸入值會增加至JComboBox中,并將輸入字體的大小顯示在JLabel上。
<pre?class="code">import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?JComboBox8?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?JComboBox8(){
?? ??JFrame?f=new?JFrame("JComboBox");
?? ??Container?contentPane=f.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);0
?? ??combo.addActionListener(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?JComboBox8();
???}
???public?void?actionPerformed(ActionEvent?e){
??? ??boolean?isaddItem=true;
??? ??int?fontsize=0;
??? ??String?tmp=(String)combo.getSelectedItem();
??? ??//判斷用戶所輸入的項目是否有重復,若有重復則不增加到JComboBox中。
??? ??try{
??? ?? ??fontsize=Integer.parseInt(tmp);
??? ?? ??for(int?i=0;i<?combo.getItemCount();i++){
??? ?? ?? ??if?(combo.getItemAt(i).equals(tmp)){
??? ?? ?? ?? ?isaddItem=false;
??? ?? ?? ?? ?break;
??? ?? ?? ??}
??? ?? ??}
??? ?? ??if?(isaddItem){
??? ?? ?? combo.insertItemAt(tmp,0);//插入項目tmp到0索引位置(第一列中).
??? ?? ??}
??? ?? ??font=new?Font("SansSerif",Font.PLAIN,fontsize);
??? ?? ??label.setFont(font);??? ?? ??
??? ??}catch(NumberFormatException?ne){
??? ?? ??combo.getEditor().setItem("你輸入的值不是整數值,請重新輸入!");
??? ??}
???}
???public?void?itemStateChanged(ItemEvent?e){//ItemListener界面只有itemStateChanged()一個方法,在此實作它。
??? ??if?(e.getStateChange()==ItemEvent.SELECTED){//當用戶的選擇改變時,則在JLabel上會顯示出Swing目前字形大小信息.
??? ?? ??int?fontsize=0;
??? ?? ??try{
??? ?? ?? ?fontsize=Integer.parseInt((String)e.getItem());
??? ?? ?? ?label.setText("Swing?目前字形大小:"+fontsize);??? ?? ?? ?
??? ?? ??}catch(NumberFormatException?ne){//若所輸入的值不是整數,則不作任何的操作.
??? ?? ??
??? ?? ??}
??? ??}
???}
}
?
?
?
?
?
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;??
???
public?class?testFrame?extends?JFrame?implements?ItemListener
{??
?JComboBox?comboBox;
???JPanel?p=new?JPanel();?
?JButton?c;
?JButton?c2?;
??public?testFrame()
??{
?JButton?c=new?JButton("a")?;
?JButton?c2=new?JButton("b")?;
comboBox=new?JComboBox();
?comboBox.addItem("1");
?comboBox.addItem("2");
?comboBox.addItem("3");
?comboBox.addItemListener(this);
?p.add(?comboBox);
?????this.getContentPane().add(p);??
??
????this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);??
????this.setSize(360,?260);??
????this.setVisible(true);??
?}??
??
?public?void?itemStateChanged(ItemEvent?e)
?{
???????if(e.getStateChange()?==?ItemEvent.SELECTED)
????????????{
? ????????????String?s=(String)comboBox.getSelectedItem();
???????????????? System.out.println(s);
?????????????}
}??
?public?static?void?main(String?args[])?
?{??
??new?testFrame();??
?}??
??
}??
?
總結
以上是生活随笔為你收集整理的JavaGUI中的JComboBox的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适合宝妈开的店铺有哪些 一边看孩子
- 下一篇: 今借到小号如何实名