博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swing开发之JComboBox篇
阅读量:4034 次
发布时间:2019-05-24

本文共 5864 字,大约阅读时间需要 19 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

JList和ComboBox很相似,因为这两个组件都显示一个项列表。因此,它们都有扩展ListModel接口的模型。而且,这两个组件都有绘制器,这些绘制器通过实现ListCellBenderer接口来绘制列表单元。

  但是,列表和组合框在施工方面还是有差别的。列表单是不可编辑的,但是组合框可以配备一个编辑器。JComboBox组件把编辑工作交给实现ComboBoxEdit接口的一个对象来处理。
  列表支持三个选取模式,并把选取工作实现ListSelectionModel接口的一个对象来处理。组合框在一个时刻只有一个可选取的项,而且选取工作由组合框模型来处理。另一方面,组合框支持键选取,即在某项上按下一下键就可以选取这个项,但列表不能这样做。
构造函数
JComboBox()
          创建具有默认数据模型的 JComboBox。
JComboBox(ComboBoxModel aModel)
          创建一个 JComboBox,其项取自现有的 ComboBoxModel 中。
JComboBox(Object[] items)
          创建包含指定数组中的元素的 JComboBox。
JComboBox(Vector<?> items)
          创建包含指定 Vector 中的元素的 JComboBox。
常用方法
addActionListener(ActionListener l)
          添加 ActionListener。
addItem(Object anObject)
          为项列表添加项。
addItemListener(ItemListener aListener)
          添加 ItemListener。
configureEditor(ComboBoxEditor anEditor, Object anItem)
          利用指定项初始化编辑器。
getEditor()
          返回用于绘制和编辑 JComboBox 字段中所选项的编辑器。
getItemAt(int index)
          返回指定索引处的列表项。
getItemCount()
          返回列表中的项数。
getModel()
          返回 JComboBox 当前使用的数据模型。
getRenderer()
          返回用于显示 JComboBox 字段中所选项的渲染器。
getSelectedIndex()
          返回列表中与给定项匹配的第一个选项。
getSelectedItem()
          返回当前所选项。
insertItemAt(Object anObject, int index)
          在项列表中的给定索引处插入项。
isEditable()
          如果 JComboBox 可编辑,则返回 true。
removeAllItems()
          从项列表中移除所有项。
removeItem(Object anObject)
          从项列表中移除项。
removeItemAt(int anIndex)
          移除 anIndex 处的项。
setModel(ComboBoxModel aModel)
          设置 JComboBox 用于获取项列表的数据模型。
setRenderer(ListCellRenderer aRenderer)
          设置渲染器,该渲染器用于绘制列表项和从 JComboBox 字段的列表中选择的项。
setSelectedIndex(int anIndex)
          选择索引 anIndex 处的项。
setSelectedItem(Object anObject)
          将组合框显示区域中所选项设置为参数中的对象

例 1:给JComboBox增加ItemListener和ActionListener

import java.awt.BorderLayout; import java.awt.ItemSelectable; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JComboBox; import javax.swing.JFrame; public class ItemListenerSelectingComboSample {   static private String selectedString(ItemSelectable is) {     Object selected[] = is.getSelectedObjects();     return ((selected.length == 0) ? "null" : (String) selected[0]);   }   public static void main(String args[]) {     String labels[] = { "A", "B", "C", "D", "E", "F" };     JFrame frame = new JFrame("Selecting JComboBox");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     JComboBox comboBox = new JComboBox(labels);     comboBox.setEditable(true);     comboBox.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent e) {         System.out.println("Selected index=" + ((JComboBox)e.getSource()).getItemCount());       }     });     frame.add(comboBox, BorderLayout.SOUTH);     ItemListener itemListener = new ItemListener() {       public void itemStateChanged(ItemEvent itemEvent) {         int state = itemEvent.getStateChange();         System.out.println((state == ItemEvent.SELECTED) ? "Selected" : "Deselected");         System.out.println("Item: " + itemEvent.getItem());         ItemSelectable is = itemEvent.getItemSelectable();         System.out.println(", Selected: " + selectedString(is));       }     };     comboBox.addItemListener(itemListener);     frame.setSize(400, 200);     frame.setVisible(true);   } }

例 2:采用模板创建JComboBox,同一个模板创建的两个不同JComboBox,对模板操作时两个JComboBox会同时改变

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class SharedDataBetweenComboBoxSample {   public static void main(String args[]) {     final String labels[] = { "A", "B", "C", "D", "E", "F", "G" };     final DefaultComboBoxModel model = new DefaultComboBoxModel(labels);     JFrame frame = new JFrame("Shared Data");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     JPanel panel = new JPanel();     JComboBox comboBox1 = new JComboBox(model);     comboBox1.setEditable(true);     JComboBox comboBox2 = new JComboBox(model);     comboBox2.setEditable(true);     panel.add(comboBox1);     panel.add(comboBox2);     frame.add(panel, BorderLayout.NORTH);     JButton button = new JButton("Add");     frame.add(button, BorderLayout.SOUTH);     ActionListener actionListener = new ActionListener() {       public void actionPerformed(ActionEvent actionEvent) {         model.addElement("New Added");       }     };     button.addActionListener(actionListener);     frame.setSize(300, 200);     frame.setVisible(true);   } }

例 3:采用ArrayList组装JComboBox

import java.awt.BorderLayout; import java.util.ArrayList; import java.util.Collection; import javax.swing.AbstractListModel; import javax.swing.ComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; class ArrayListComboBoxModel extends AbstractListModel implements ComboBoxModel {   private Object selectedItem;   private ArrayList anArrayList;   public ArrayListComboBoxModel(ArrayList arrayList) {     anArrayList = arrayList;   }   public Object getSelectedItem() {     return selectedItem;   }   public void setSelectedItem(Object newValue) {     selectedItem = newValue;   }   public int getSize() {     return anArrayList.size();   }   public Object getElementAt(int i) {     return anArrayList.get(i);   } } public class ArrayListComboBoxModelDemo {   public static void main(String args[]) {     JFrame frame = new JFrame("ArrayListComboBoxModel");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     ArrayList arrayList = new ArrayList();     arrayList.add("A");     arrayList.add("B");     arrayList.add("C");     ArrayListComboBoxModel model = new ArrayListComboBoxModel(arrayList);     arrayList.add("A");     arrayList.add("B");     arrayList.add("C");     JComboBox comboBox = new JComboBox(model);     frame.add(comboBox, BorderLayout.NORTH);     frame.setSize(300, 225);     frame.setVisible(true);   } }

 

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
linux和windows内存布局验证
查看>>
linux config
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux dump_backtrace
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>