Swing中如何实现二级联动下拉列表

简介: 笔记

简言之,比如说第一个框里有广东,江苏,安徽各省,第二个下拉框里有广东省的各个城市,比如广州,深圳之类的

见代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
public class MyFrame extends JFrame {
    //    声明下来列表JComboBox
    private JComboBox choice1;
    private JComboBox choice2;
    //定义一个数组
    private static String[] s1 = {"中国","美国","日本","澳大利亚","法国","德国","英国"};
    private static String[][] s2 = {
            {"北京","上海","广州","深圳"},
            {"华盛顿","纽约","芝加哥","旧金山"},
            {"东京","大阪","名古屋","北海道"},
            {"悉尼","堪培拉","珀斯"},
            {"巴黎","南特","德勒","鲁昂"},
            {"柏林","华沙","卢布林","波兹南"},
            {"伦敦","曼切斯特","诺丁汉","牛津"}
    };
    public MyFrame(String title){
        super(title);
        //        设置布局管理
        getContentPane().setLayout(new GridLayout(2,2,0,0));
//        创建标签
        JLabel label1 = new JLabel("选择你喜欢的国家:");
        label1.setHorizontalAlignment(SwingConstants.RIGHT);
        getContentPane().add(label1);
        //        实例化JComboBox对象
        choice1 = new JComboBox(s1);
        // 为组合框的选择动作注册监听事件,当此组合框的选择有变化时,另一个组合框自动更新内容
        choice1.addActionListener(e -> {
            choice2.removeAllItems();
            JComboBox cb = (JComboBox) e.getSource();
//            获得选择项目
            String itemString = (String) cb.getSelectedItem();
            System.out.println(itemString);
            int index = choice1.getSelectedIndex();
            for(int i=0; i<s2[index].length; i++) {
                choice2.addItem(s2[index][i]);
            }
        });
        getContentPane().add(choice1);
        //        创建标签
        JLabel label2 = new JLabel("选择城市:");
        label2.setHorizontalAlignment(SwingConstants.RIGHT);
        getContentPane().add(label2);
        //        实例化JComboBox对象
        choice2 = new JComboBox(s2[0]);
        //        注册Action事件监听,采用Lambda表达式
        choice2.addItemListener(e -> {
//            获得选择项目
            if (e.getStateChange() == ItemEvent.SELECTED){
//                获得选择项目
                String itemString = (String) e.getItem();
                System.out.println(itemString);
            }
        });
        getContentPane().add(choice2);
        //        设置窗口大小
        setSize(400,150);
//        设置窗口可见
        setVisible(true);
    }
}

调用代码:

public class HelloWorld {
    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame("下拉列表");
    }
}

运行结果:

5.png

相关文章
|
设计模式 JSON 前端开发
前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)(一)
前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)
260 0
|
前端开发 JavaScript Java
前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)(二)
前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)(二)
72 0
|
7月前
|
Java
Swing UI - 可收起与开展内容面板实现演示
Swing UI - 可收起与开展内容面板实现演示
68 3
|
7月前
|
前端开发 程序员 UED
全面解析layui:掌握基础知识与实用技能(1. 核心组件与模块 2. 布局与容器 3. 弹出层与提示框;1. 数据表格与数据表单 2. 表单验证与提交 3. 图片轮播与导航菜单)
全面解析layui:掌握基础知识与实用技能(1. 核心组件与模块 2. 布局与容器 3. 弹出层与提示框;1. 数据表格与数据表单 2. 表单验证与提交 3. 图片轮播与导航菜单)
86 0
|
7月前
|
前端开发 JavaScript
一篇文章讲明白iframe分栏拖拽伸缩例子
一篇文章讲明白iframe分栏拖拽伸缩例子
103 0
《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox
《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox
425 0
50EasyUI 树形菜单- 使用标记创建树形菜单
50EasyUI 树形菜单- 使用标记创建树形菜单
41 0
|
前端开发
ECharts图表ajax动态赋值Tab选项卡切换数据表的解决方案
ECharts图表ajax动态赋值Tab选项卡切换数据表的解决方案
201 0
swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件
swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件
261 0
swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件
|
容器
swing用布局管理实现QQ登录界面 2.0(以及swing控件的一些基本的设置、鼠标事件等等花样的总结)
swing用布局管理实现QQ登录界面 2.0(以及swing控件的一些基本的设置、鼠标事件等等花样的总结)
247 0
swing用布局管理实现QQ登录界面 2.0(以及swing控件的一些基本的设置、鼠标事件等等花样的总结)