zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然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() ;
    	}
    }	
    

      

  • 相关阅读:
    《新土改:土地制度改革焦点难点辨析》:土地涨价要归公并用于城市配套设施,城市化的主角是人,小产权房不应该合法化,四星
    《清明上河图密码》:北宋的福尔摩斯探案,五星
    《中国的人口与城市》:关于中国人口与中国城市的数据分析,4星推荐。
    《集体失忆的黑暗时代》:已故加拿大公共知识分子关于城市规划与人类文明的随笔,三星推荐
    《智慧社会:大数据与社会物理学》:研究人类的想法的流动扩散的规律,四星
    《中国东部三大都市圈城市体系演化机制研究》:博士论文,结论是北上广深城市化规模还是不够,三星推荐
    《中国十亿城民——人类历史上最大规模人口流动背后的故事》:中国城市化将继续,城市对外来务工者应该更友好更包容,三星
    [Javascript] JavaScript赋值时的传值与传址
    [Vue @Component] Pass Props Between Components with Vue Slot Scope & renderless component
    [Dart] Understand Variables and Constants in Dart
  • 原文地址:https://www.cnblogs.com/tszr/p/12398924.html
Copyright © 2011-2022 走看看