【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# 语音识别 | 智能对话
在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音. 以上,当我说"name",显示"Darren",我说"age&q ...
- 第一个java的应用程序
编写java第一个程序 class HelloWorld { public static void main(String[] args){ System.out.print("Hello ...
- echarts做饼图
今天记录下echarts做饼图 父组件 <el-card style="height:600px ;margin-top:20px" v-loading="card ...
- 玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同
Zabbix作为一款流行的企业级监控工具,可以监控各种网络设备和服务的状态,并提供强大的告警功能,能够在出现异常情况时及时通知管理员.以下是Zabbix的一些特点: 支持多种监控方式,包括SNMP.J ...
- spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中,切面内重新抛出异常
spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中 aop类实现Aspect的多个方法注解中,只有Around注解的方法是有返回值的,可以对方法的入参和返回值均进 ...
- nacos v2.2 k8s部署启动报错:nacos server did not start because dumpservice bean construction failure. errMsg102, errllsg dataSource or tableName is null
背景 最近搭建个nacos环境,用的镜像是2.2版本的,yaml如下: nacos-conf apiVersion: v1 kind: ConfigMap metadata: name: nacos- ...
- Linux 内核:RCU机制与使用
Linux 内核:RCU机制与使用 背景 学习Linux源码的时候,发现很多熟悉的数据结构多了__rcu后缀,因此了解了一下这些内容. 介绍 RCU(Read-Copy Update)是数据同步的一种 ...
- B码对时方案,基于TI AM62x异构多核工业处理器实现!
什么是IRIG-B码对时 IRIG-B(inter-range instrumentationgroup-B)码是一种时间同步标准,通常用于精确的时间测量和数据同步,广泛应用于电力.通信.航空等领域. ...
- JS中this的几种指向
这些this的指向,是当我们调用函数的时候确定的.调用方式的不同决定了this的指向不同一般指向我们的调用者.普通函数调用 window.定时器函数 wind ...
- go语言的基础语法
字符串数组 package main import ( "fmt" ) func main() { var str string str = "hello world&q ...