列表和下拉选择:

package cn.dzz;

import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Arrays;
import java.util.List;
import java.util.Vector; public class JList {
JFrame jFrame = new JFrame("列表框测试");
String[] bookList = {
"java自学宝典",
"轻量级JavaEE企业级开发",
"android基础教程",
"jquery实战教程",
"SpringBoot企业级开发"
}; JPanel layoutPanel = new JPanel();
ButtonGroup layoutGroup = new ButtonGroup(); JPanel selectModePanel = new JPanel();
ButtonGroup selectModeGroup = new ButtonGroup();
JTextArea displayZone = new JTextArea(4, 40); // JList对象
javax.swing.JList<String> jBookList;
JComboBox<String> bookSelector; public void init() { jBookList = new javax.swing.JList(bookList); addBtn2LayoutPanel("纵向滚动", javax.swing.JList.VERTICAL );
addBtn2LayoutPanel("纵向换行", javax.swing.JList.VERTICAL_WRAP );
addBtn2LayoutPanel("横向滚动", javax.swing.JList.HORIZONTAL_WRAP ); addBtn2SelectModelPanel("无限制", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
addBtn2SelectModelPanel("单选", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
addBtn2SelectModelPanel("单范围", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); jBookList.setVisibleRowCount(3);
jBookList.setSelectionInterval(2, 4); // 选中处理
jBookList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
List<String> selectedValuesList = jBookList.getSelectedValuesList();
displayZone.setText("");
for (String s : selectedValuesList) {
displayZone.append(s + "\n");
}
}
}); Box verticalBox = Box.createVerticalBox();
verticalBox.add(new JScrollPane(jBookList));
verticalBox.add(layoutPanel);
verticalBox.add(selectModePanel); Vector<String> vector = new Vector<>();
List<String> list = Arrays.asList(bookList);
vector.addAll(list); bookSelector = new JComboBox<>(vector);
bookSelector.setEditable(true);
bookSelector.setMaximumRowCount(4); // 监听下拉选择
bookSelector.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
Object selectedItem = bookSelector.getSelectedItem();
displayZone.setText(selectedItem.toString() + "\n");
}
}); Box horizontalBox = Box.createHorizontalBox();
horizontalBox.add(verticalBox);
//horizontalBox.add(bookSelector);
JPanel bookSelectorPanel = new JPanel();
bookSelectorPanel.add(bookSelector);
horizontalBox.add(bookSelectorPanel); JPanel bottomPanel = new JPanel();
bottomPanel.add(new JLabel("您最喜欢的图书:"), BorderLayout.NORTH);
bottomPanel.add(displayZone); Box verticalBox1 = Box.createVerticalBox();
verticalBox1.add(horizontalBox);
verticalBox1.add(bottomPanel); jFrame.add(verticalBox1); // bookSelector = new JComboBox<>(books); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
} // 封装按钮
public void addBtn2LayoutPanel(String name, int layoutType) {
layoutPanel.setBorder(new TitledBorder(new EtchedBorder(), "确定选项布局"));
JRadioButton button = new JRadioButton(name);
layoutPanel.add(button); if (layoutGroup.getButtonCount() == 0) {
button.setSelected(true);
} layoutGroup.add(button); button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jBookList.setLayoutOrientation(layoutType);
}
});
} public void addBtn2SelectModelPanel(String name, int selectionModel) {
selectModePanel.setBorder(new TitledBorder(new EtchedBorder(), "确定选项模式"));
JRadioButton button = new JRadioButton(name);
selectModePanel.add(button); if (selectModeGroup.getButtonCount() == 0) {
button.setSelected(true);
} selectModePanel.add(button); button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jBookList.setSelectionMode(selectionModel);
}
});
} public static void main(String[] args) {
new JList().init();
}
}

【Java-GUI】12 Swing07 JList的更多相关文章

  1. 再见!【JAVA GUI】

    1.GUI概述 图形用户界面(Graphical User Interface,简称 GUI,又 称图形用户接口)是指采用图形方式显示的计算机操作用户界面. java作为一种面向对象的程序设计语言,它 ...

  2. 【Java GUI】Java GUI基金会

    AWT和Swing Swing是个AWT改进和扩展. 书写GUI规划.Swing和AWT曾效力.他们共存 Java基础类(JFC)于. 虽然AWT和Swing都提供了构造图形界面元素的类.但它们的虫药 ...

  3. 【Java基础】12、java中方法的参数传递机制

    问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个 ...

  4. 【Java GUI】Java面板基础:JPanel

    有两个面板,常见的面板(JPanel)和滚动面板(JScrollPane) Jpanel 面板是一种常见的容器,JPanel的作用是实现接口层次结构,面放入一些组件.也能够在上面绘画,将放有组件和有画 ...

  5. 【Java基础】11、java方法中只有值传递,没有引用传递

    public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...

  6. 【java设计模式】-00目录

    开篇 [java设计模式]-01设计模式简介 创建型模式: [java设计模式]-02工厂模式(Factory Pattern) [java设计模式]-03抽象工厂模式(Abstract Factor ...

  7. 【Java基础】4、java中的内部类

    内部类的分类:常规内部类.静态内部类.私有内部类.局部内部类.匿名内部类. 实例1:常规内部类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  8. 【JAVA系列】Google爬虫如何抓取JavaScript的?

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]Google爬虫如何抓取Java ...

  9. 【线性表基础】基于线性表的简单算法【Java版】

    本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeR ...

  10. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

随机推荐

  1. ctfshow-超详细通关教程-web(1~8)

    快捷目录 web1 web2 web3 web4 web5 web6 web7 web8 1.web签到题 打开网址后出现如下界面. 查看一下网站源码 将Y3Rmc2hvd3s1ZjkxNTc3Yy0 ...

  2. linux系统,kafka常用命令

    kafka版本过高所致,2.2+=的版本,已经不需要依赖zookeeper来查看/创建topic,新版本使用 --bootstrap-server替换老版本的 --zookeeper-server. ...

  3. 推荐一款免费的终端工具-Windterm

    Windterm 提到SSH终端工具,大家一定会想到putty.xshell.MobaXterm这些产品.但是当我使用Windterm后,我彻底改变了我对之前使用SSH终端工具的认知,其强大的能力,彻 ...

  4. JavaScript执行模型笔记

    JavaScript执行模型 引言 JavaScript是一个单线程(Single-threaded)异步(Asynchronous)非阻塞(Non-blocking)并发(Concurrent)语言 ...

  5. Apache Shiro 的三大核心组件

    a.Subject :当前用户的操作 b.SecurityManager:用于管理所有的Subject c.Realms:用于进行权限信息的验证

  6. 升级babel7后,直接引用element-ui中没有暴露出来的组件image-viewer.vue导致的打包错误

    问题 & 解决方案 升级babel7后,原先代码中像这样直接引用element-ui组件的地方,出现了报错 Module parse failed: Unexpected token (1:0 ...

  7. javascript 生成器和迭代器

    前置知识 生成器函数会返回一种称为Generator的迭代器 迭代器是一个对象,定义一个序列,并在终止时返回一个返回值 Symbol.iterator为每一个对象定义了默认的迭代器,可以被for..o ...

  8. requests的使用

    准备工作 安装request库 pip install request 实例引入 get方法实现GET请求,返回一个Response对象,存放在变量r中,分别输出响应的类型.状态码.响应体的类型.内容 ...

  9. 推荐一个vs Nuget部署插件

    写在前面 nuget部署工具, 无论是直接用web上传还是用命令行工具上传,还是其他第三方工具我都没找到满意,直到那天在群里提了一下,有位大佬说了个NuPackvs插件,用了下,感觉基本满足了我的需求 ...

  10. 使用AWS Glue进行 ETL 工作

    数据湖 数据湖的产生是为了存储各种各样原始数据的大型仓库.这些数据根据需求,进行存取.处理.分析等.对于存储部分来说,开源版本常见的就是 hdfs.而各大云厂商也提供了各自的存储服务,如 Amazon ...