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

列表

列表(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】小应用程序有两个列表,第一个列表只允许单选,第二个列表允许多选。

 import java.applet.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyWindow extends JFrame implements ListSelectionListener{
JList list1,list2;
String news[]={"人民日报","新民晚报","浙江日报","文汇报"};
String sports[]={"足球","排球","乒乓球","篮球"};
JTextArea text;
MyWindow(String s){
super(s);
Container con = getContentPane();
con.setBackground(Color.BLUE);
con.setLayout(new GridLayout(2,2));
con.setSize(200,500);
list1 = new JList(news);
list1.setVisibleRowCount(3);
list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list1.addListSelectionListener(this);
list2 = new JList(sports);
list2.setVisibleRowCount(2);
list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
list2.addListSelectionListener(this);
con.add(list1);
con.add(list2);
text= new JTextArea(10,20);
con.add(text);
this.setVisible(true);
this.pack();
}
public void valueChanged(ListSelectionEvent e){// 每当选择值发生更改时调用
if(e.getSource()==list1){
text.setText(null);
Object listValue = ((JList) e.getSource()).getSelectedValue();
String seleName = listValue.toString();
for(int i=0;i<news.length;i++)
if(news[i].equals(seleName)){
text.append(seleName+ "被选中\n");
}
}
else if(e.getSource()==list2){
text.setText(null);
int tempList[] =list2.getSelectedIndices();
for(int i=0;i<tempList.length;i++)
text.append(sports[tempList[i]] + "被选中\n");
}
}
}
public class Example6_3 extends Applet{
MyWindow myWin = new MyWindow("列表示例");
}

组合框

组合框(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接口。组合框子类的窗口中设置了一个文本框和一个组合框,组合框中有三个选择。实现接口的监视方法将组合框的选择结果在文本框中显示。

 public class Example6_4{
public static void main(String args[]){
ComboBoxDemo mycomboBoxGUI = new ComboBoxDemo();
}
}
class ComboBoxDemo extends JFrame implements ActionListener,ItemListener{
public static final int Width = 350;
public static final int Height = 150;
String proList[] = { "踢足球","打篮球","打排球" };
JTextField text;
JComboBox comboBox;
public ComboBoxDemo(){
setSize(Width,Height);
setTitle("组合框使用示意程序");
Container conPane = getContentPane();
conPane.setBackground(Color.BLUE);
conPane.setLayout(new FlowLayout());
comboBox = new JComboBox(proList);
comboBox.addActionListener(this);
combobox.addItemListener(this);
comboBox.setEditable(true);//响应键盘输入
conPane.add(comboBox);
text = new JTextField(10);
conPane.add(text);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==comboBox)
text.setText(comboBox.getSelectedItem().toString());
}
public void itemStateChanged(ItemEvent e){
if(e.getSource()==comboBox){
text.setText(comboBox.getSelectedItem().toString());
}
}
}

系列文章:

Java知多少(88)列表和组合框的更多相关文章

  1. Java知多少(89)列表和组合框

    有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个 ...

  2. Java知多少(87)选择框和单选按钮(转)

    选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(J ...

  3. Java知多少(86)文本框和文本区的输入输出

    在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...

  4. Java知多少(87)选择框和单选按钮

    选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(J ...

  5. 十. 图形界面(GUI)设计9.列表和组合框

    列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择. 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象.程序可以在列表框中加入多个文 ...

  6. Java知多少(85)文本框和文本区

    在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...

  7. Java知多少(完结篇)

    Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...

  8. Java知多少(下)

    Java知多少(78)Java向量(Vector)及其应用 Java知多少(79)哈希表及其应用 Java知多少(80)图形界面设计基础 Java知多少(81)框架窗口基础 Java知多少(82)标签 ...

  9. Java知多少(112)数据库之删除记录

    删除数据表也有3种方案 一.使用Statement对象 删除数据表记录的SQL语句的语法是: delete from 表名 where 特定条件 例如 : delete from ksInfo whe ...

随机推荐

  1. OpenStack容器网络项目Kuryr(libnetwork)

    转:https://www.aliyun.com/jiaocheng/518375.html 摘要:容器近几年非常流行,有很多项目都考虑将容器与SDN结合.Kuryr就是其中一个项目.Kuryr项目在 ...

  2. MySQL中查询获取每个班级成绩前三名的学生信息

    CREATE TABLE t_testscore( pk_id INT PRIMARY KEY, c_name VARCHAR(50) , c_score INT, c_class INT )DEFA ...

  3. Linux虚拟地址和物理地址的映射

    ➤背景 一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G.用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核 ...

  4. 洛谷 P2574 XOR的艺术(线段树 区间异或 区间求和)

    To 洛谷.2574 XOR的艺术 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的 ...

  5. swoole深入学习 1. swoole初始

    0. 前言 swoole在PHP圈火了这么久,从2年前我用node写socket聊天服务器的时候就火了,那时候,经常有类似的文章php+swoole完爆nodejs之类的文章来吸引眼球,先不说它的好与 ...

  6. Android摘抄总结

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:葛小葛链接:http://www.zhihu.com/question/27069588/answer/38417756来源: ...

  7. maven遇到的一些问题

    (1)在加载的时候pom.xml文件是和src同级的,当在pom.xml导入jar包时一定要先把jar包所在的项目mvn install否则会报找不到的错误 (2)怎么找到maven原有的仓库? 找到 ...

  8. GitLab 安装(推荐)

    参考文档: https://about.gitlab.com/installation/#centos-7 基础环境 [root@node1 ~]# uname -r -.el7.x86_64 [ro ...

  9. db2调优

    系统上线两个月左右,请IBM工程师对数据库进行了一次调优,主要收获感觉有以下几点: 1,应用服务器一定要与数据库服务器分开 2,如果存在多个数据库,一定要硬盘分开(io忙) 3,每个数据库的数据与日志 ...

  10. android: 碎片的demo

    现在你已经将关于碎片的重要知识点都掌握得差不多了,不过在灵活运用方面可能还有 些欠缺,因此又该进入我们本章的最佳实践环节了. 前面有提到过,碎片很多时候都是在平板开发当中使用的,主要是为了解决屏幕空间 ...