【Java-GUI】12 Swing07 JList
列表和下拉选择:
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的更多相关文章
- 再见!【JAVA GUI】
1.GUI概述 图形用户界面(Graphical User Interface,简称 GUI,又 称图形用户接口)是指采用图形方式显示的计算机操作用户界面. java作为一种面向对象的程序设计语言,它 ...
- 【Java GUI】Java GUI基金会
AWT和Swing Swing是个AWT改进和扩展. 书写GUI规划.Swing和AWT曾效力.他们共存 Java基础类(JFC)于. 虽然AWT和Swing都提供了构造图形界面元素的类.但它们的虫药 ...
- 【Java基础】12、java中方法的参数传递机制
问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个 ...
- 【Java GUI】Java面板基础:JPanel
有两个面板,常见的面板(JPanel)和滚动面板(JScrollPane) Jpanel 面板是一种常见的容器,JPanel的作用是实现接口层次结构,面放入一些组件.也能够在上面绘画,将放有组件和有画 ...
- 【Java基础】11、java方法中只有值传递,没有引用传递
public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...
- 【java设计模式】-00目录
开篇 [java设计模式]-01设计模式简介 创建型模式: [java设计模式]-02工厂模式(Factory Pattern) [java设计模式]-03抽象工厂模式(Abstract Factor ...
- 【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 ...
- 【JAVA系列】Google爬虫如何抓取JavaScript的?
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]Google爬虫如何抓取Java ...
- 【线性表基础】基于线性表的简单算法【Java版】
本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeR ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
随机推荐
- c# .net mvc 使用百度Ueditor富文本框上传文件(图片,视频等)
使用背景: 项目中需要用的富文本框去上传视频,图片的话大部分都是可以的.相对来说,国外的富文本框很成熟.但鉴于文档是英语,这里使用了百度的富文本框. 采用的api的方式,调用接口进行上传文件.话不多说 ...
- jq 下载带上token设置form表单并且兼容ie8
先在publice公共资源里面或者自己随便写一个函数自己记得调用就行 先加载form表单组件 /** * 添加form下载组件 * @param {*} wrp */ appendFormDownlo ...
- 搭建springboot redis项目
1.创建项目 如果出现init失败(需要等待网络可以正常连接) 或者运行主类的时候报错(错误: 找不到或无法加载主类),需要重新导入maven项目再重新编译试试. 2.引入pom jar <?x ...
- Prime Solutions
Prime Solutions 以下是一段中学时代的惨痛回忆-每当学到排列组合的单元时,最痛苦的不是分析题目,也不是带错公式或计算错误,而是所谓的「苦工题」,以下这题是个例子:给定正整数N与S,求出方 ...
- 58同城的登录(RSA算法)
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 58同城的登录(RSA算法) 日期:2016-11-23 ...
- Atcoder Beginner Contest 324 F Beautiful Path 题解-分数规划
为了更好的阅读体验,请点击这里 分数规划小技巧:尽可能将式子写成存在某种取值,使得不等式成立的形式. 不然可能需要绕几个弯才能想出来. 题目链接 题目大意:给出一个 DAG,每条边有一个 \(b_i, ...
- 基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建镜像加速服务
本文主要介绍了如何基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建 dockerhub.gcr.quay 等镜像加速服务. 最近,受限于各种情况,部 ...
- C# Newtonsoft增删改查(本地存储)(简单便捷)(拿来即用)
调用方法: LocalSetupHelper.SetData(Sss.维护, "密码", "123456"); //保存 var c=LocalSetupHel ...
- php常用缓存逻辑
代码 //行为限频 if (!function_exists('doSomethingLimit')) { function doSomethingLimit($key, $second, Closu ...
- 【资料分享】全志科技T507-H工业核心板规格书
1 核心板简介 创龙科技SOM-TLT507是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53全国产工业核心板,主频高达1.416GHz.核心板CPU.ROM.RAM.电源.晶 ...