列表框通过Swing组件JList产生,其总是在屏幕上占据固定行数的空间。如果要得到列表框中被选中的元素,只需调用getSelectedValuesList(),它可以产生一个字符串数组,内容为被选中的元素名称。JList组件允许多重选择;如果按住Ctrl键,可以选中所有点击的元素;如果选中一个元素,按住Shift键并单击另一个元素,那么这两个元素之间的所有元素都被选中;要从选中的元素中去掉一个,按住Ctrl键单击该元素即可。

初始化列表框后,接着便是向列表框添加和修改内容。分为静态操作和动态操作。

1、静态操作

静态操作便是将所有元素同时添加到JList中,添加后不能修改,不能删除,即在程序执行过程中不能操作列表框。

E.g.

package test;

import javax.swing.*;

import java.awt.*;

import static net.mindview.util.SwingConsole.*;

public class ListTest1 extends JFrame{

private String[] str = {"Monday","Tuesday","Wednesday","Thursday","Friday","Staturday","Sunday"};

private JList list;public ListTest1()

{

list = new JList(str);

setLayout(new FlowLayout());

add(list);

}

public static void main(String[] args)

{

run(new ListTest1(),200,100);

}

}

如上例,只要在初始化JList时将所有元素添加进去即可。

执行结果:列表框不可以被操作。

2、动态操作

通过查看JList的方法,可以发现JList不负责列表框的动态操作,所有的动态操作的细节可以在“列表模型”即DefaultListModel中完成,只需将该列表模型加入JList即可。

DefaultListModel listmodel = new DefaultListModel();

listmodel.addElement(element1);//添加元素

listmodel.clear();//清除全部元素

listmodel.remove(int index);//清除指定位置的元素

E.g.

package test;

import java.awt.*;import java.awt.event.*;import static net.mindview.util.SwingConsole.*;

import javax.swing.*;

import javax.swing.border.Border;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

public class ListTest extends JFrame{

private String[] str = {"Monday","Tuesday","Wednesday","Thursday","Friday","Staturday","Sunday"};

private JButton button1 = new JButton("Add Item"),

button2 = new JButton("Clear Item");

private JTextArea text = new JTextArea(str.length,20);

private DefaultListModel listmodel = new DefaultListModel();

private JList list = new JList(listmodel);

//将列表模型加入JList,列表模型负责完成动态操作,JList负责创建列表以及许多其它工作(如多重选择)。

private int count = 0;

private boolean flag = false;

public ListTest()

{

text.setEditable(false);//只是用来显示,不能编辑

for(int i = 0;i<4;i++)

{

listmodel.addElement(str[count++]);

}

button1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e)

{

if(count

{

listmodel.addElement(str[count++]);

}else

{

button1.setEnabled(flag);

flag = true;

}

}

});

button2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e)

{

if(count

{

count = 0;//列表重新开始添加元素

listmodel.clear();//列表元素清除

text.setText(null);

}else

{

count = 0;

listmodel.clear();

text.setText(null);

button1.setEnabled(flag);//启动按钮

}

}

});

list.addListSelectionListener(new ListSelectionListener(){

@SuppressWarnings("deprecation")

public void valueChanged(ListSelectionEvent e)

{

if(e.getValueIsAdjusting())

return;

//如果检测到事件在更改,则返回true,后面语句不执行;当更改结束后,则返回false,执行后面语句。 for(Object item : list.getSelectedValuesList())

{

text.append(item + "\n");//List型对象转换为Object

}

//list调用getSelectedValuesList()方法,产生一个字符串数组,内容为被选中的元素名称

}

});

setLayout(new FlowLayout());

Border border = BorderFactory.createMatteBorder(1, 1, 2, 2, Color.RED);//添加边框

list.setBorder(border);//设置边框

text.setBorder(border);

add(button1);

add(button2);

add(new JScrollPane(text));

add(list);

}

public static void main(String[] args)

{

run(new ListTest(),250,375);

}

}

执行结果:

在上面的程序中,对JList的处理过程中用到了JList所支持的事件ListSelectionEvent的getValueIsAdjusting()方法以及JList的getSelectedValuesList()方法,需要注意这两个方法的用法。

(1)Boolean javax.swing.event.ListSelectionEvent.getValueIsAdjusting()

返回此事件是否是仍然在更改的多个不同事件之一,如果此事件是仍然在更改的多个不同事件之一,则返回 true。

例如,对于选择被更新以响应一个用户的拖动的事件,那么在拖动开始时,此属性被设置为 true;在拖动结束时被设置为 false。在拖动期间,监听器接收 valueIsAdjusting 属性设置为 true 的事件。在拖动的最后,当更改终止时,监听器接收一个值设置为 false 的事件。

如果将JList对象的注册程序去掉更新检测的语句:

if(e.getValueIsAdjusting())

return;

输出为:

可见,没有了更新检测,选中列表框元素后,有重复输出。

(2)List javax.swing.JList.getSelectedValuesList()

JList对象调用getSelectedValuesList()方法,产生一个字符串数组,内容为被选中的元素名称。

3、JList滚动条

JList本没有对滚动提供直接的支持,我们只要将JList包装进JScrollPane,它将自动帮助处理所有细节。

总结:JList想添加元素,可以执行将所有元素在JList初始化时加入的静态操作,也可以利用“列表模型”DefaultListModel处理所有列表修改细节的动态操作。

注意:在JList元素选择的过程中可能会用到更新检测,从而确保程序的稳定性。

以上所述是小编给大家介绍的java图形用户界面之列表框,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

java列表框_Java图形用户界面之列表框相关推荐

  1. java word文本框_Java 读取Word文本框中的文本、图片、表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  2. java下拉文本框_java swing 下拉框与文本框

    import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; publi ...

  3. java集合表_java集合类散列表

    哈希表 是种数据结构,它可以提供快速的插入操作和查找操作.第一次接触哈希表时,它的优点多得让人难以置信.不论哈希表中有多少数据, 插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级.实际 ...

  4. java 图形 登录_Java图形界面——登录框

    /* * 登录框 */ package com.test.swing; import java.awt.*; import javax.swing.*; public class Test1 exte ...

  5. java 可变参数列表 数组_java可变参数列表如何填充数组?

    在对于数组的填充上,我们可以运行参数的传递,把数组作为可变参数的列表进行调整.对于一些参数个数和类型未知的时候,这种方法就能帮助我们解决填充数组的难题,因为这种方法并不需要提前知道.下面我们就可变参数 ...

  6. java checkbox数组_Java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节. 思路如下: 创建JPanel面板对象: 使用JPane ...

  7. java jradiobutton使用_Java Swing组件单选框JRadioButton用法示例

    本文实例讲述了Java Swing组件单选框JRadioButton用法.分享给大家供大家参考,具体如下: JRadioButton是Swing中的单选框.所谓单选框是指,在同一个组内虽然有多个单选框 ...

  8. java 组合框_Java知多少(88)列表和组合框

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

  9. java swing 列表框_Java开发笔记(一百三十一)Swing的列表框

    前面介绍了选择框的用法,当时为了方便用户勾勾点点,无论是复选框还是单选按钮,统统把所有选项都摆在界面上.倘若只有两三个选项还好办,要是选项数量变多比如超过五个,这么多的选择框一齐在界面罗列,不光程序员 ...

最新文章

  1. vray for 3dmax2019中文版
  2. python type函数
  3. 用行为树的方式思考:任务系统设计
  4. Django(part33)--数据库的迁移
  5. Codeforces Round #700 (Div. 2)A~D2解题报告
  6. Spread基本知识(一)
  7. llustrator 教程,如何在 Illustrator 中对齐内容?
  8. 数据结构与算法(C语言版)——陈越
  9. 【独家折扣】淘客小程序源码
  10. 《计算机网络实验》网络参数配置与常用网络命令使用,超级详细教程
  11. 使用hardhat 开发以太坊智能合约-发布合约
  12. 行业缩减他却增加!海尔智家研发投入创新高
  13. 买天文望远镜必看——已知望远镜焦距、相机画幅,求视场(附代码,实时更新)
  14. 中国菜刀使用教程--ctf 文件上传
  15. facebook分享 whatsapp分享 点击按钮复制链接 常用js分享内容
  16. 流量变现的好方法都在这里了!
  17. 计算机功能及部件ppt,《计算机逻辑部件》PPT课件.ppt
  18. 投资即修行,千里之行始于足下
  19. MySQL学习15:子查询(一)
  20. 微信电脑端双击不能放大图片怎么回事_电脑微信收到的截图是这样子的,双击一下打开才看的到,我自己也发不出截图...

热门文章

  1. Windows Phone开发(8):关于导航的小技巧
  2. 请问delphix下双缓冲是自动开启的吗?
  3. 程序员写的数字代表什么_代表性不足的国家的程序员可以取得成功的6种方法...
  4. vim 文本编辑器_标志性的文本编辑器Vim庆祝成立25周年
  5. 某一年某一年_过去一年里有关开放式组织的5个最受欢迎的故事
  6. 给开源项目贡献代码_您可以为开源做出6种非代码贡献
  7. linux 文件管理器_8个Linux文件管理器尝试
  8. mesos_Linux Foundation提供了新的认证,Mesos进入了Google等等
  9. 开源 非开源_开源周中的女性
  10. Java是有法_Java基础语法