Java程序设计 图形用户界面 【十二】下拉列表JComboBox

下拉列表JComboBox

JList是以列表框的形式进行显示的

有列表又可以自己输入数据这种组件就称为下拉列表框

JComboBox类可以完成这样的功能

JComboBox类的常用方法

方法 作用
public JComboBox(ComboBoxModel aModel) 利用ComboBox 构造一个JComboBox对象
public JComboBox(Object[] items) 利用对象数组构造一个JComboBox对象
public JComboBox(Vector<?> items) 利用Vector构成一个JComboBox对象
public Object getItemAt(int index) 返回指定索引处的列表项
public int getItemCount() 返回列表中的项数
public void addItem(Object anObject) 为列表增加内容
public void setEditable(boolean aFlag) 设置此下拉列表是否可编辑
public void setMaximumRowCount(int count) 设置下拉列表显示的最大行数
public void setSelectedIndex(int anIndex) 设置默认选项的索引号
public ComboBoxEditor getEditor() 返回JComboBox的内容编辑器
public void configureEditor(ComboBoxEditor anEditor,Object anItem) 初始化编辑器
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;class MyComboBox{private JFrame frame = new JFrame("一");private Container cont = frame.getContentPane();private JComboBox jcb1 = null;private JComboBox jcb2 = null;public MyComboBox(){this.frame.setLayout(new GridLayout(2,1));String n[] = {"A","B","C","D"};Vector<String> v = new Vector<String>();v.add("a");v.add("b");v.add("c");v.add("d");this.jcb1 = new JComboBox(n);this.jcb2 = new JComboBox(v);cont.add(this.jcb1);cont.add(this.jcb2);this.frame.setSize(300,150);this.frame.setVisible(true);this.frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);System.exit(1);}});}
}
public class Hello {public static void main(String[] args) {new MyComboBox();}
}

使用JComboBox建立了两个下拉列表框

在JComboBox中也可以使用ComboBoxModel接口来构造JComboBox中的列表内容,ComboBoxModel接口是ListModel接口的子类,继承ListModel中的所有操作方法

ComboBox接口增加的方法

方法 作用
void setSelectedItem(Object anItem ) 设置选项内容
Object getSelectedItem() 返回选择项

使用ComboBox和AbstractListModel构造可编辑的JComboBox

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;class MyComboBoxModel extends AbstractListModel implements ComboBoxModel{String n[] = {"A","B","C","D"};String item = null;public Object getSelectedItem(){return this.item;}public void setSelectedItem(Object arg){this.item=(String) arg;}@Overridepublic int getSize() {return this.n.length;}@Overridepublic Object getElementAt(int index) {return this.n[index];}
}
class MyComboBox{private JFrame frame = new JFrame("一");private Container cont = frame.getContentPane();private JComboBox jcb1 = null;public MyComboBox(){this.frame.setLayout(new GridLayout(2,1));this.jcb1 = new JComboBox(new MyComboBoxModel());jcb1.setBorder(BorderFactory.createTitledBorder("请选择"));
//        设置最多显示3个jcb1.setMaximumRowCount(3);jcb1.setEditable(true);ComboBoxEditor editor = null;editor = jcb1.getEditor();jcb1.configureEditor(editor,"请选择");cont.add(this.jcb1);this.frame.setSize(180,150);this.frame.setVisible(true);this.frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);System.exit(1);}});}
}
public class Hello {public static void main(String[] args) {new MyComboBox();}
}

使用ComboBoxModel构造了JComBox对象,在程序中将JComboBox设置为可以编辑,即用户可以直接通过文本选择选项的内容

JComboBox事件处理

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;class MyComboBox implements ItemListener, ActionListener{private JFrame frame = new JFrame("一");private Container cont = frame.getContentPane();private JComboBox jcb1 = null;private JLabel label = new JLabel("A");private String n[] ={"A","B","C","D"};public MyComboBox(){this.frame.setLayout(new GridLayout(2,1));this.jcb1 = new JComboBox(this.n);jcb1.addItemListener(this);jcb1.addActionListener(this);jcb1.setEditable(true);cont.add(this.jcb1);cont.add(label);this.frame.setSize(300,200);this.frame.setVisible(true);this.frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);System.exit(1);}});}
// 输入信息时触发@Overridepublic void actionPerformed(ActionEvent e) {String s = (String)this.jcb1.getSelectedItem();this.label.setText(s);}
// 选项改变时触发@Overridepublic void itemStateChanged(ItemEvent e) {if(e.getStateChange()==ItemEvent.SELECTED){String s = (String) e.getItem();this.label.setText(s);}}
}
public class Hello {public static void main(String[] args) {new MyComboBox();}
}

[外链图片转存中…(img-powhw15y-1645016303781)]

Java程序设计 图形用户界面 【十二】下拉列表JComboBox相关推荐

  1. Java程序设计 图形用户界面 【十三】菜单

    Java程序设计 图形用户界面 [十三]菜单 菜单组件 JMenu与JMenuBar 菜单 JMenuBar组件的功能是用来摆放JMenu组件,当建立完多个JMenu组件之后,需要通过JMenuBar ...

  2. 201671010103 2016-2017-2 《Java程序设计》第十二周学习心得

    Java的抽象窗口工具箱(Abtract Window Toolkit,AWT )包含在java.awt中它提供了许多用来设计GUI的组件类和容器类:而Swing类库被包含在javax.swing包里 ...

  3. Java程序设计 图形用户界面 小巫版简易计算器

    /** 作者:wwj 时间:2012/4/13 功能:实现一个计算器应用程序实验要求:编写一个模拟计算器的应用程序,使用面板和网格布局, 添加一个文本框,10个数字按钮(0~9),4个加减乘除按钮, ...

  4. Java语言程序设计----- 图形用户界面设计

    Java语言程序设计----- 图形用户界面设计 1.实验目的 (1)掌握Java Swing组件的使用方法. (2)理解委托事件处理模型. (3)设计具有图形用户界面的.能够响应事件的Java应用程 ...

  5. 20175227张雪莹 2018-2019-2 《Java程序设计》第十周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第十周学习总结 教材学习内容总结 第十二章 Java多线程机制 进程与线程 线程是比进程更小的执行单位,一个进程在其执行 ...

  6. Java Swing 图形用户界面——常见组件

    一直在用C\C++,还没开始认真学Java,但这几天课堂上的Java Swing 图形用户界面引起了我的兴趣.正好前段时间在玩Qt的图形化界面,发现两者有很多相似之处,学起来也容易很多.(但实际上Ja ...

  7. 201521123038 《Java程序设计》 第十周学习总结

    201521123038 <Java程序设计> 第十周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题 ...

  8. 20155335俞昆《java程序设计》第十周总结

    学号 2016-2017-2 <Java程序设计>第十周学习总结 ## 事实上网络编程,我们可以简单的理解为两台计算机相互通讯数据而已,对于程序员而言,掌握一种编程接口并使用一种编程模型相 ...

  9. java程序设计编程题_20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题...

    20165237 2017-2018-2 <Java程序设计>第十周考试补做及编程题 知识点 1.链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 . ...

最新文章

  1. linux的android工作室,Android工作室在启动时抛出错误,linux机器
  2. sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights)、计算融合模型的混淆矩阵、可视化混淆矩阵
  3. html中div裹div,html – 围绕div包裹textarea输入
  4. Android四大组件之BroadCastReceiver
  5. day3 程序流程控制
  6. Dart 10-Day
  7. Windows 下安装 tensorflow keras opencv 的避坑指南!
  8. 分析频域滤波和空域滤波的各自特点_同态滤波原理及其matlab实现
  9. director 3d tank
  10. 天涯怎么引流到qq?天涯社区如何靠发帖子引流?
  11. dcdc模块降额设计_人工智能产品设计—LDO使用的技术总结篇
  12. itext生成pdf加页码和总页码
  13. Unity和Easy AR制作一个AR的APP
  14. 98大水灾,各国各地区对我国的捐助一览表
  15. 打印时中间空白,两边清楚
  16. 手写springIOC、AOP
  17. clion三角形运行键是灰的_能打游戏能编程,如何用吃灰机器,安装完整ChromeOS(支持安卓)...
  18. Keras loss函数
  19. 电影院和计算机和字典的英语怎么拼,电影院用英语怎么读
  20. mysql geo_地理位置geo处理之mysql函数

热门文章

  1. python--wordcloud库的使用
  2. GitHub上传本地项目文件
  3. Django 小记 FileResponse 实现文件下载
  4. 微信小程序登录后再次使用判断用户是否登录
  5. mac python2找不到,无法使用brew安装 问题解决方案
  6. 修改mysql密码的四种方法
  7. 华为mate30支持html,华为mate30参数配置
  8. IntelliJ IDEA断点调试如何查看源码
  9. idea全局搜索及替换
  10. csv文件操作和爬虫抓取豆瓣影评并生成词云图