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实现动态树效果(书籍管理系统左侧下拉列表)
221 0
|
前端开发 JavaScript Java
前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)(二)
前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)(二)
62 0
|
5月前
|
Java
Swing UI - 可收起与开展内容面板实现演示
Swing UI - 可收起与开展内容面板实现演示
49 3
|
5月前
|
前端开发 程序员 UED
全面解析layui:掌握基础知识与实用技能(1. 核心组件与模块 2. 布局与容器 3. 弹出层与提示框;1. 数据表格与数据表单 2. 表单验证与提交 3. 图片轮播与导航菜单)
全面解析layui:掌握基础知识与实用技能(1. 核心组件与模块 2. 布局与容器 3. 弹出层与提示框;1. 数据表格与数据表单 2. 表单验证与提交 3. 图片轮播与导航菜单)
77 0
|
6月前
|
前端开发
Element常用组件—表格、表单、对话框和分页工具条
Element常用组件—表格、表单、对话框和分页工具条
88 0
《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox
《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox
284 0
|
容器
swing用布局管理实现QQ登录界面 2.0(以及swing控件的一些基本的设置、鼠标事件等等花样的总结)
swing用布局管理实现QQ登录界面 2.0(以及swing控件的一些基本的设置、鼠标事件等等花样的总结)
228 0
swing用布局管理实现QQ登录界面 2.0(以及swing控件的一些基本的设置、鼠标事件等等花样的总结)
|
Java 容器
《Java 2 图形设计卷Ⅱ- SWING》第9章 反转按钮、复选框和单选框
第9章 反转按钮、复选框和单选框   本章介绍三种Swing按钮:反转按钮、复选按钮和单选按钮,它们分别由JToggleButton、JCheckBox和JRadioButton类代表。
1232 0
|
Java 容器
《Java 2 图形设计卷Ⅱ- SWING》第8章 标签与按钮
第8章 标签与按钮   Swing的标签和按钮分别用JLabel和JButton类表示,它们是能够显示文本或图标的简单组件。缺省时,标签没有边框,可以显示一个字符串,一个图标或同时显示字符串和图标。
1399 0