利用ComboBoxModel构建JComboBox

 

基础知识介绍:

ComboBoxModel是一个combo box的一个数据模型,其中引入了selected  item的概念,被选中的元素在combo box的显示区域可以显示出来。

定义为:

public interface ComboBoxModel extends ListModel

接口中定义的方法如下:

Object getSelectedItem():返回选中的项目值(returns the selected item)

void setSelectedItem(Object anItem):设置选中的项目值(set the selected item)

实验程序代码如下:

package _20120206;

import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.AbstractListModel;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;

public class JComboBoxConstruct {

	String[] s = {"喵喵","狗狗","小白兔","大狮子"};
	
	public JComboBoxConstruct(){
		JFrame f = new JFrame("@调查问卷@");
		f.setBounds(10, 100, 90, 200);
		Container contentPane = f.getContentPane();
		ComboBoxModel mode = new UserDefineComboBoxModel();
		JComboBox combo = new JComboBox(mode);
		combo.setBorder(BorderFactory.createTitledBorder("你最喜欢哪种动物?"));
		contentPane.add(combo);
//		f.pack();
		f.show();
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
	}
	
	class UserDefineComboBoxModel extends AbstractListModel implements ComboBoxModel{

		String item = null;
		@Override
		public Object getSelectedItem() {
			// TODO Auto-generated method stub
			return this.item;
		}

		@Override
		public void setSelectedItem(Object item) {
			// TODO Auto-generated method stub
			this.item = (String)item;
		}

		@Override
		public Object getElementAt(int index) {
			// TODO Auto-generated method stub
			return s[index++];
		}

		@Override
		public int getSize() {
			// TODO Auto-generated method stub
			return s.length;
		}
		
	}
	public static void main(String[] args){
		new JComboBoxConstruct();
	}
}

程序过程分析:

程序执行JComboBox时,系统会首先调用getSize()方法,计算JComboBox长度,然后再调用getElementAt()方法,将String s中的值添加到JComboBox中。在选择项目时,系统会调用getSelectedItem(),通过调用setSelectedItem()方法将选择的项目显示到最前端。

实验结果展示:

你可能感兴趣的:(Java)