当前位置: 首页 > news >正文

Java知多少(88)列表和组合框

列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择。

列表

列表(JList)在界面中表现为列表框,是JList类或它的子类的对象。程序可以在列表框中加入多个文本选择项条目。列表事件的事件源有两种:

  • 一是鼠标双击某个选项:双击选项是动作事件,与该事件相关的接口是ActionListener,注册监视器的方法是addActionListener(),接口方法是actionPerformed(ActionEvent e)。
  • 二是鼠标单击某个选项:单击选项是选项事件,与选项事件相关的接口是ListSelectionListener,注册监视器的方法是addListSelectionListener,接口方法是valueChanged(ListSelectionEvent e)。


JList 类的常用构造方法:

  1. JList():建立一个列表。
  2. JList(String list[]):建立列表,list是字符串数组,数组元素是列表的选择条目。


JList类的常用方法:

  1. getSelectedIndex():获取选项的索引。返回最小的选择单元索引;只选择了列表中单个项时,返回该选择。
  2. getSelectedValue():获取选项的值。
  3. getSelectedIndices():返回所选的全部索引的数组(按升序排列)。
  4. getSelectedValues(),:返回所有选择值的数组,根据其列表中的索引顺序按升序排序。
  5. getItemCount():获取列表中的条数。
  6. setVisibleRowCount(int n):设置列表可见行数。
  7. setSelectionMode(int seleMode):设置列表选择模型。选择模型有单选和多选两种。
    • 单选:ListSelectionModel.SINGLE_SELECTION.
    • 多选:ListSelectionModel.MULTIPLE.INTERVAL_SELECTION.
  8. remove(int n):从列表的选项菜单中删除指定索引的选项。
  9. removeAll():删除列表中的全部选项。


列表可以添加滚动条,列表添加滚动条的方法是先创建列表,然后再创建一个JScrollPane滚动面板对象,在创建滚动面板对象时指定列表。以下代码示意为列表list2添加滚动条:
    JScrollPane jsp = new JScrollPane(list2);

【例 11-13】小应用程序有两个列表,第一个列表只允许单选,第二个列表允许多选。

 1 import java.applet.*;
 2 import javax.swing.*;
 3 import java.awt.*;
 4 import java.awt.event.*;
 5 class MyWindow extends JFrame implements ListSelectionListener{
 6     JList list1,list2;
 7     String news[]={"人民日报","新民晚报","浙江日报","文汇报"};
 8     String sports[]={"足球","排球","乒乓球","篮球"};
 9     JTextArea text;
10     MyWindow(String s){
11         super(s);
12         Container con = getContentPane();
13         con.setBackground(Color.BLUE);
14         con.setLayout(new GridLayout(2,2));
15         con.setSize(200,500);
16         list1 = new JList(news);
17         list1.setVisibleRowCount(3);
18         list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
19         list1.addListSelectionListener(this);
20         list2 = new JList(sports);
21         list2.setVisibleRowCount(2);
22         list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
23         list2.addListSelectionListener(this);
24         con.add(list1);
25         con.add(list2);
26         text= new JTextArea(10,20);
27         con.add(text);
28         this.setVisible(true);
29         this.pack();
30     }
31     public void valueChanged(ListSelectionEvent e){// 每当选择值发生更改时调用
32         if(e.getSource()==list1){
33             text.setText(null);
34             Object listValue = ((JList) e.getSource()).getSelectedValue();
35             String seleName = listValue.toString();
36             for(int i=0;i<news.length;i++)
37                 if(news[i].equals(seleName)){
38                     text.append(seleName+ "被选中\n");
39                 }
40         }
41         else if(e.getSource()==list2){
42             text.setText(null);
43             int tempList[] =list2.getSelectedIndices();
44             for(int i=0;i<tempList.length;i++)
45                 text.append(sports[tempList[i]] + "被选中\n");
46          }
47      }
48  }
49 public class Example6_3 extends Applet{
50     MyWindow myWin = new MyWindow("列表示例");
51 }

组合框

组合框(JComboBox)是文本框和列表的组合,可以在文本框中输入选项,也可以单击下拉按钮从显示的列表中进行选择。

组合框的常用构造方法:

  1. JComboBox():建立一个没有选项的JComboBox对象。
  2. JComboBox(JComboBoxModel aModel):用数据模型建立一个JComboBox对象。
  3. JComboBox(Object[]items):利用数组对象建立一个JComboBox对象。


组合框的其他常用方法有以下几个:

  1. addItem(Object obj):向组合框加选项。
  2. getItemCount():获取组合框的条目总数。
  3. removeItem(Object ob):删除指定选项。
  4. removeItemAt(int index):删除指定索引的选项。
  5. insertItemAt(Object ob,int index):在指定的索引处插入选项。
  6. getSelectedIndex():获取所选项的索引值(从0开始)。
  7. getSelectedItem():获得所选项的内容。
  8. setEditable(boolean b):设为可编辑。组合框的默认状态是不可编辑的,需要调用本方法设定为可编辑,才能响应选择输入事件。


在JComboBox对象上发生事件分为两类。一是用户选定项目,事件响应程序获取用户所选的项目。二是用户输入项目后按回车键,事件响应程序读取用户的输入。第一类事件的接口是ItemListener;第二类事件是输入事件,接口是ActionListener。

【例 11-14】一个说明组合框用法的应用程序。程序中声明的组合框子类实现ItemLister接口和ActionListener接口。组合框子类的窗口中设置了一个文本框和一个组合框,组合框中有三个选择。实现接口的监视方法将组合框的选择结果在文本框中显示。

 1 public class Example6_4{
 2     public static void main(String args[]){
 3         ComboBoxDemo mycomboBoxGUI = new ComboBoxDemo();
 4     }
 5 }
 6 class ComboBoxDemo extends JFrame implements ActionListener,ItemListener{
 7     public static final int Width = 350;
 8     public static final int Height = 150;
 9     String proList[] = { "踢足球","打篮球","打排球" };
10     JTextField text;
11     JComboBox comboBox;
12     public ComboBoxDemo(){
13         setSize(Width,Height);
14         setTitle("组合框使用示意程序");
15         Container conPane = getContentPane();
16         conPane.setBackground(Color.BLUE);
17         conPane.setLayout(new FlowLayout());
18         comboBox = new JComboBox(proList);
19         comboBox.addActionListener(this);
20         combobox.addItemListener(this);
21         comboBox.setEditable(true);//响应键盘输入
22         conPane.add(comboBox);
23         text = new JTextField(10);
24         conPane.add(text);
25         this.setVisible(true);
26     }
27     public void actionPerformed(ActionEvent e){
28         if(e.getSource()==comboBox)
29             text.setText(comboBox.getSelectedItem().toString());
30     }
31     public void itemStateChanged(ItemEvent e){
32         if(e.getSource()==comboBox){
33             text.setText(comboBox.getSelectedItem().toString());
34         }
35     }
36 }

系列文章:

Java知多少(上)
Java知多少(中)
Java知多少(78)Java向量(Vector)及其应用
Java知多少(79)哈希表及其应用
Java知多少(80)图形界面设计基础
Java知多少(81)框架窗口基础
Java知多少(82)标签、按钮和按钮事件简介
Java知多少(83)面板基础:JPanel和JScrollPane
Java知多少(84)图形界面之布局设计
Java知多少(85)文本框和文本区
Java知多少(86)文本框和文本区的输入输出
Java知多少(87)选择框和单选按钮

转载于:https://www.cnblogs.com/Coda/p/4567121.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Dev之GridControl详解
  • linux 安装pnp时出现了一些错误
  • 报表打印网络按比例打印网络图片
  • Nim教程【十一】
  • 表达式 - PHP手册笔记
  • winzip15.0许可证
  • 云平台现有问题
  • 基于一个公网ip实现多主机上网
  • ffmpeg中swscale 的用法
  • 【吾日三省吾身】2015.6.20-涅槃行动第三十三天
  • Python套接字编程(1)——socket模块与套接字编程
  • 详解java Final关键字
  • pthread_t定义结构
  • 魔方阵
  • 写给努力坚持自学LINUX的自己
  • Django 博客开发教程 16 - 统计文章阅读量
  • Flannel解读
  • Iterator 和 for...of 循环
  • Linux链接文件
  • mongo索引构建
  • QQ浏览器x5内核的兼容性问题
  • vue-loader 源码解析系列之 selector
  • Wamp集成环境 添加PHP的新版本
  • 创建一个Struts2项目maven 方式
  • 对超线程几个不同角度的解释
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于webpack 的 vue 多页架构
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端面试之CSS3新特性
  • 做一名精致的JavaScripter 01:JavaScript简介
  • MyCAT水平分库
  • #1015 : KMP算法
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $forceUpdate()函数
  • (16)Reactor的测试——响应式Spring的道法术器
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (力扣)1314.矩阵区域和
  • (七)glDrawArry绘制
  • (转)C#调用WebService 基础
  • (转)程序员技术练级攻略
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET CLR Hosting 简介
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET分布式缓存Memcached从入门到实战
  • .net流程开发平台的一些难点(1)
  • .net通过类组装数据转换为json并且传递给对方接口
  • :如何用SQL脚本保存存储过程返回的结果集
  • [AIGC] Java List接口详解
  • [Armbian] 部署Docker版Home Assistent,安装HACS并连接米家设备
  • [C++] 从零实现一个ping服务