吴裕雄--天生自然JAVA图形界面编程学习笔记:下拉列表框JComboBox

import javax.swing.JFrame ;
import java.awt.Container ;
import java.awt.event.WindowEvent ;
import java.awt.event.WindowAdapter ;
import java.awt.GridLayout ;
import javax.swing.JComboBox ;
import javax.swing.JLabel ;
import javax.swing.BorderFactory ;
import java.util.Vector ;
class MyComboBox{
    private JFrame frame = new JFrame("Welcome TO MLDN") ;
    private Container cont = frame.getContentPane() ;    // 得到容器
    private JComboBox jcb1 = null ;
    private JComboBox jcb2 = null ;
    public MyComboBox(){
        this.frame.setLayout(new GridLayout(2,2)) ;    // 定义排版
        String nations[] = {"中国","巴西","美国","韩国","意大利","法国"} ;
        Vector<String> v = new Vector<String>() ;
        v.add("MLDN") ;    // 增加内容
        v.add("MLDNJAVA") ;    // 增加内容
        v.add("智囊团") ;    // 增加内容
        this.jcb1 = new JComboBox(nations) ;    // 实例化下拉列表框
        this.jcb2 = new JComboBox(v) ;    // 实例化下拉列表框

        // 为每一个下拉框增加一个边框
        this.jcb1.setBorder(BorderFactory.createTitledBorder("你喜欢去那个国家旅游?")) ;
        this.jcb2.setBorder(BorderFactory.createTitledBorder("你喜欢的网站?")) ;
        cont.add(this.jcb1) ;
        cont.add(this.jcb2) ;
        cont.add(new JLabel("下拉列表框")) ;
        this.frame.setSize(300,150) ;
        this.frame.setVisible(true) ;
        this.frame.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(1) ;
            }
        }) ;
    }
}

public class JComboBoxDemo01{
    public static void main(String args[]){
        new MyComboBox() ;
    }
}
import javax.swing.JFrame ;
import java.awt.Container ;
import java.awt.event.WindowEvent ;
import java.awt.event.WindowAdapter ;
import java.awt.GridLayout ;
import javax.swing.JComboBox ;
import javax.swing.JLabel ;
import javax.swing.JLabel ;
import javax.swing.AbstractListModel ;
import javax.swing.BorderFactory ;
import javax.swing.ComboBoxEditor ;
import javax.swing.ComboBoxModel ;
import java.util.Vector ;

class MyComboBoxModel extends AbstractListModel implements ComboBoxModel{
    private String nations[] = {"中国","巴西","美国","韩国","意大利","法国"} ;
    private String item = null ;
    public Object getSelectedItem(){    // 得到选择的选项
        return this.item ;
    }
    public void setSelectedItem(Object anItem){    // 设置选项
        this.item = (String)anItem ;
    }
    public int getSize(){
        return this.nations.length ;
    }
    public Object getElementAt(int ind){
        return this.nations[ind] ;
    }
}

class MyComboBox{
    private String defaultMsg = "请选择或输入国家的名称。" ;
    private JFrame frame = new JFrame("Welcome TO MLDN") ;
    private Container cont = frame.getContentPane() ;    // 得到容器
    private JComboBox jcb1 = null ;
    private JComboBox jcb2 = null ;
    public MyComboBox(){
        this.frame.setLayout(new GridLayout(2,1)) ;    // 定义排版
        
        this.jcb1 = new JComboBox(new MyComboBoxModel()) ;    // 实例化下拉列表框
        this.jcb1.setEditable(true) ;    // 表示可以编辑

        // 为每一个下拉框增加一个边框
        this.jcb1.setBorder(BorderFactory.createTitledBorder("你喜欢去那个国家旅游?")) ;
        ComboBoxEditor editor = null ;
        editor = this.jcb1.getEditor() ;    /// 得到编辑对象
        this.jcb1.configureEditor(editor,defaultMsg) ;// 指定默认值
        this.jcb1.setMaximumRowCount(3) ;
        cont.add(this.jcb1) ;
        cont.add(new JLabel("下拉列表框")) ;
        this.frame.setSize(180,150) ;
        this.frame.setVisible(true) ;
        this.frame.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(1) ;
            }
        }) ;
    }
}

public class JComboBoxDemo02{
    public static void main(String args[]){
        new MyComboBox() ;
    }
}
import javax.swing.JFrame ;
import java.awt.Container ;
import java.awt.Font ;
import java.awt.event.WindowEvent ;
import java.awt.event.ActionListener ;
import java.awt.event.ItemListener ;
import java.awt.event.ItemEvent ;
import java.awt.event.ActionEvent ;
import java.awt.event.WindowAdapter ;
import java.awt.GridLayout ;
import javax.swing.JComboBox ;
import javax.swing.JLabel ;
import javax.swing.ComboBoxEditor ;
import javax.swing.BorderFactory ;
import java.util.Vector ;
class MyComboBox implements ItemListener,ActionListener{
	private JFrame frame = new JFrame("Welcome TO MLDN") ;
	private Container cont = frame.getContentPane() ;	// 得到容器
	private JComboBox jcb1 = null ;
	private JLabel label = new JLabel("www.MLDNJAVA.cn") ;	// 定义标签
	private String fontSize[] = {"10","12","14","16","18","20","22","24","26","48","72"} ;
	public MyComboBox(){
		this.frame.setLayout(new GridLayout(2,2)) ;	// 定义排版
		this.jcb1 = new JComboBox(fontSize) ;	// 实例化下拉列表框

		this.jcb1.addItemListener(this) ;
		this.jcb1.addActionListener(this) ;

		this.jcb1.setEditable(true) ;	// 表示可以编辑

		// 为每一个下拉框增加一个边框
		this.jcb1.setBorder(BorderFactory.createTitledBorder("你喜欢去那个国家旅游?")) ;
		ComboBoxEditor editor = null ;
		editor = this.jcb1.getEditor() ;	/// 得到编辑对象
		this.jcb1.configureEditor(editor,"12") ;// 指定默认值
		this.jcb1.setMaximumRowCount(3) ;

		this.changeFontSize(12) ;	// 默认值
		cont.add(this.jcb1) ;

		cont.add(label) ;
		this.frame.setSize(300,150) ;
		this.frame.setVisible(true) ;
		this.frame.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(1) ;
			}
		}) ;
	}
	public void itemStateChanged(ItemEvent e){
		if(e.getStateChange()==ItemEvent.SELECTED){	// 判断是否是选中
			String itemSize = (String)e.getItem() ;
			try{
				this.changeFontSize(Integer.parseInt(itemSize)) ;
			}catch(Exception e1){
				
			}
		}
	}

	public void actionPerformed(ActionEvent e){
		String item = (String)this.jcb1.getSelectedItem() ;
		int size = 12 ;	// 设置一个默认大小
		try{
			size = Integer.parseInt(item) ;
		}catch(Exception e1){}
		this.changeFontSize(size) ;
		// 判断给定的size是否存在,如果不存在则需要将新的内容设置上去
		if(!this.isExists(item))
		{
			this.jcb1.addItem(jcb1.getSelectedItem()) ;
		}
	}
	public boolean isExists(String item){
		boolean flag = false ;
		for(int i=0;i<this.jcb1.getItemCount();i++){
			if(item.equals(this.jcb1.getItemAt(i))){
				flag = true ;
			}
		}
		return flag ;
	}
	public void changeFontSize(int size){
		System.out.println("*************" + size) ;
		Font fnt = new Font("Serief",Font.BOLD,size) ;
		this.label.setFont(fnt) ;
	}

}

public class JComboBoxDemo03{
	public static void main(String args[]){
		new MyComboBox() ;
	}
}	

  

猜你喜欢

转载自www.cnblogs.com/tszr/p/12398924.html