下拉列表框组件

前沿技术

  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 exts JFrame{ JComboBox<String> 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 exts AbstractListModel<String> implements ComboBoxModel<String>{ 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; } } }

标签: 前沿技术