下拉列表框组件

package swing;


import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

/*
 * 列表组件
 * Swing中提供两种列表组件:下拉列表框 ,列表框
 * 下拉列表框组件
 * JComboBox类
 * 常用构造方法
 * public JComboBox()
 * public JComboBox(ComboBoxModel dataModel)
 * public JComboBox(Object[] arrayData)
 * public JComboBox(Vector vector)
 * JComboBox
 * 在程序开发中,一般将下拉列表框中的项目分装为ComboBoxModel类型。
 * ComboBoxModel为接口,它代表一般模型,可以自定义一个类实现该接口,
 * 然后在初始化ComboBoxModel 接口类型,但是必须实现以下两种方法
 * public void setSelectedItem(Object item):用于设置下拉列表框中的选中项
 * public Object getSelectedItem():用于返回下拉列表框中的选中项
 * 还可以继承AbstractMOdel类,该类也有两个操作下拉列表框的方法
 * getSize():返回列表的长度
 * getElementAt(int index):返回指定索引处的值
 *
 */
public class JComboBoxModelTest extends JFrame{
    JComboBox jc=new JComboBox<>(new MyComboBox());
    JLabel jl=new JLabel("请选择证件");
    public JComboBoxModelTest(){
         setSize(new Dimension(160, 180));
            setVisible(true);
            setTitle("在窗口中设置下拉列表框");
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            Container cp = getContentPane();
            cp.setLayout(new FlowLayout());
            cp.add(jl);
            cp.add(jc);
    }
    public static void main(String[] args) {
        new JComboBoxModelTest();
    }
    class MyComboBox extends AbstractListModel implements ComboBoxModel{
        String selecteditem=null;
        String[] test= {"身份证","军人证","学生证","工作证"};
        @Override
        //根据索引返回值
        public String getElementAt(int index) {
            // TODO Auto-generated method stub
            return test[index];
        }
        @Override
        //返回下拉列表框中项目的数目
        public int getSize() {
            // TODO Auto-generated method stub
            return test.length;
        }
        @Override
        //获取下拉列表框中的项目
        public Object getSelectedItem() {
            // TODO Auto-generated method stub
            return selecteditem;
        }
        @Override
        //设置下拉列表框项目
        public void setSelectedItem(Object item) {
            // TODO Auto-generated method stub
            selecteditem=(String)item;
        }
        public int getIndex() {
            for (int i = 0; i < test.length; i++) {
                if (test[i].equals(getSelectedItem()))
                    return i;
                break;
            }
            return 0;
        }
        
    }

}

运行结果

下拉列表框组件_第1张图片下拉列表框组件_第2张图片

你可能感兴趣的:(下拉列表框组件)