列表和下拉选择:

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. WIN11 Windows 11 安装过程中如何跳过强制联网

    WIN11 Windows 11 安装过程中如何跳过强制联网.22H2. 在要求联网的页面中按下 "Shift+F10"调出命令行窗口,再输入"OOBE\BYPASSNR ...

  2. C#.NET MySql8.0 EF db first

    .net framework 4.5.2,winform 程序. mysql 8.0 1.nuget中引用EntityFramework,6.4.4 2.nuget中引用MySql.Data.Enti ...

  3. 串口收发UART(Verilog HDL)

    UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是一种异步串行通信协议,主要用于计算机和嵌入式系统之间的数据交换. 实现UART通信的 ...

  4. insert into 表名 set

    insert into 表名 set CREATE TABLE `tbl_str` ( `id` INT DEFAULT NULL, `Str` VARCHAR(30) DEFAULT NULL ) ...

  5. Java 对象转Map,Java Map转对象方法

    Java 对象转Map,Java Map转对象方法 import com.alibaba.fastjson.JSON; import org.apache.commons.beanutils.Bean ...

  6. java中判断一个String字符串或字符数组中包含某个字段

    /** * 判断String字符串中包含某个字段 * @param oriStr 原始字符串 * @return */ private static boolean findString(String ...

  7. 开源的网络瑞士军刀「GitHub 热点速览」

    上周的开源热搜项目可谓是精彩纷呈,主打的就一个方便快捷.开箱即用!这款无需安装.点开就用的网络瑞士军刀 CyberChef,试用后你就会感叹它的功能齐全和干净的界面.不喜欢 GitHub 的英文界面? ...

  8. VMware 虚拟机下载

    VMware破解版下载地址: https://www.aliyundrive.com/s/CUr4eaMgxGa 提取码:e0c8 激活码: ZF3R0-FHED2-M80TY-8QYGC-NPKYF ...

  9. python 转换PDF 到 EPS

    from win32com.client.dynamic import ERRORS_BAD_CONTEXT as ebc from win32com.client import DispatchEx ...

  10. Python数据分析代码示例

    数据清洗 在进行数据分析之前,通常需要对原始数据进行清洗,即处理缺失值.异常值.重复值等问题. 下面是一个数据清洗的示例代码: import pandas as pd # 读取原始数据 data = ...