Java快速上手之实验六

1. 编写ItemEventDemo.java,当选中或取消选中单选钮、复选钮和列表框时显示所选的结果。

2.编写GUIExample.java,当选中或取消选中单选钮、复选钮时在标签中显示相应结果。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;public class ItemEventDemo {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("选项事件");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);frame.setLayout(new FlowLayout());// 创建标签用于显示事件结果JLabel resultLabel = new JLabel("组件事件结果显示在此处");frame.add(resultLabel);// 创建单选按钮JRadioButton radioButton1 = new JRadioButton("radioButton1");JRadioButton radioButton2 = new JRadioButton("radioButton2");JRadioButton radioButton3 = new JRadioButton("radioButton3");ButtonGroup radioGroup = new ButtonGroup();radioGroup.add(radioButton1);radioGroup.add(radioButton2);radioGroup.add(radioButton3);frame.add(radioButton1);frame.add(radioButton2);frame.add(radioButton3);// 添加单选按钮监听器ItemListener radioListener = e -> {if (e.getStateChange() == ItemEvent.SELECTED) {resultLabel.setText("组件事件:" + ((JRadioButton) e.getItem()).getText() + " 被选中");}};radioButton1.addItemListener(radioListener);radioButton2.addItemListener(radioListener);radioButton3.addItemListener(radioListener);// 创建复选框JCheckBox checkBox1 = new JCheckBox("checkBox1");JCheckBox checkBox2 = new JCheckBox("checkBox2");frame.add(checkBox1);frame.add(checkBox2);// 添加复选框监听器ItemListener checkBoxListener = e -> {JCheckBox source = (JCheckBox) e.getItem();if (e.getStateChange() == ItemEvent.SELECTED) {resultLabel.setText("组件事件:" + source.getText() + " 被选中");} else {resultLabel.setText("组件事件:" + source.getText() + " 被取消");}};checkBox1.addItemListener(checkBoxListener);checkBox2.addItemListener(checkBoxListener);// 创建下拉列表框String[] options = {"第一项", "第二项", "第三项"};JComboBox<String> comboBox = new JComboBox<>(options);frame.add(comboBox);// 添加下拉列表监听器comboBox.addItemListener(e -> {if (e.getStateChange() == ItemEvent.SELECTED) {resultLabel.setText("组件事件:" + e.getItem() + " 被选中");}});// 设置窗口可见frame.setVisible(true);}
}2.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class GUIExample {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("个人信息调查");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(600, 400);frame.setLayout(new GridLayout(5, 1));// 年龄组面板JPanel agePanel = new JPanel();agePanel.setBorder(BorderFactory.createTitledBorder("年龄段:"));JRadioButton age1 = new JRadioButton("5~15岁");JRadioButton age2 = new JRadioButton("16~25岁");JRadioButton age3 = new JRadioButton("26~35岁");JRadioButton age4 = new JRadioButton("36~45岁");JRadioButton age5 = new JRadioButton("46~55岁");ButtonGroup ageGroup = new ButtonGroup();ageGroup.add(age1);ageGroup.add(age2);ageGroup.add(age3);ageGroup.add(age4);ageGroup.add(age5);agePanel.add(age1);agePanel.add(age2);agePanel.add(age3);agePanel.add(age4);agePanel.add(age5);// 兴趣爱好面板JPanel hobbyPanel = new JPanel();hobbyPanel.setBorder(BorderFactory.createTitledBorder("兴趣爱好:"));JCheckBox hobby1 = new JCheckBox("上网聊天交友");JCheckBox hobby2 = new JCheckBox("体育/户外健身");JCheckBox hobby3 = new JCheckBox("汽车/购物");JCheckBox hobby4 = new JCheckBox("旅游/度假", true);JCheckBox hobby5 = new JCheckBox("时尚服装化妆品");hobbyPanel.add(hobby1);hobbyPanel.add(hobby2);hobbyPanel.add(hobby3);hobbyPanel.add(hobby4);hobbyPanel.add(hobby5);// 输出结果面板JPanel resultPanel = new JPanel();resultPanel.setBorder(BorderFactory.createTitledBorder("调查的结果为:"));JTextField resultField = new JTextField(40);resultField.setEditable(false);resultPanel.add(resultField);// 按钮面板JPanel buttonPanel = new JPanel();JButton submitButton = new JButton("提交");JButton clearButton = new JButton("清空");buttonPanel.add(submitButton);buttonPanel.add(clearButton);// 添加面板到主窗口frame.add(agePanel);frame.add(hobbyPanel);frame.add(resultPanel);frame.add(buttonPanel);// 事件监听:提交按钮submitButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {StringBuilder result = new StringBuilder("你是一个");// 获取选中的年龄段if (age1.isSelected()) result.append("5~15岁的人");else if (age2.isSelected()) result.append("16~25岁的人");else if (age3.isSelected()) result.append("26~35岁的人");else if (age4.isSelected()) result.append("36~45岁的人");else if (age5.isSelected()) result.append("46~55岁的人");else result.append("未选择年龄段的人");// 获取选中的兴趣爱好result.append(",你比较喜欢");boolean hasHobby = false;if (hobby1.isSelected()) {result.append("上网聊天交友");hasHobby = true;}if (hobby2.isSelected()) {if (hasHobby) result.append("、");result.append("体育/户外健身");hasHobby = true;}if (hobby3.isSelected()) {if (hasHobby) result.append("、");result.append("汽车/购物");hasHobby = true;}if (hobby4.isSelected()) {if (hasHobby) result.append("、");result.append("旅游/度假");hasHobby = true;}if (hobby5.isSelected()) {if (hasHobby) result.append("、");result.append("时尚服装化妆品");}if (!hasHobby) result.append("暂无兴趣爱好");result.append("。");// 显示结果resultField.setText(result.toString());}});// 事件监听:清空按钮clearButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {ageGroup.clearSelection();hobby1.setSelected(false);hobby2.setSelected(false);hobby3.setSelected(false);hobby4.setSelected(false);hobby5.setSelected(false);resultField.setText("");}});// 显示窗口frame.setVisible(true);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT6 源(72):阅读与注释单选框这个类型的按钮 QRadioButton,及各种属性验证,

&#xff08;1&#xff09;按钮间的互斥&#xff1a; &#xff08;2&#xff09;源码来自于头文件 qradiobutton . h &#xff1a; #ifndef QRADIOBUTTON_H #define QRADIOBUTTON_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qabstractbutton.h>…

【算法滑动窗口】 将x减到0的最小操作数

将x减到0的最小操作数 个人总结的八步归纳AI的归纳**8步归纳法&#xff08;极简直白版&#xff09;**1. 问题本质2. 问题特征3. 切入点4. 解决流程5. 每步目标与操作6. 注意事项7. 最终目标8. 整体总结 代码对照&#xff08;逐行解析&#xff09;举个栗子&#x1f330;**一句话…

RISC-V GPU架构研究进展:在深度学习推理场景的可行性验证

一、新型算力架构的突围战 在英伟达CUDA生态主导的GPU市场中&#xff0c;RISC-V架构正以‌开源基因‌和‌模块化设计‌开辟新赛道。当前主流GPU架构面临两大痛点&#xff1a; 指令集封闭性‌&#xff1a;NVIDIA的SASS指令集与AMD的GCN/RDNA架构均采用私有指令编码&#xff0c…

LVGL -滑动条

1 滑动条 LVGL 的滑动条(Slider)是一个非常有用的控件,允许用户通过拖动滑块或点击滑条来选择一个值。 1.1 基本定义 滑动条允许用户在一个预定义的数值范围内选择一个特定的值。它通常由一个轨道(track)和一个滑块(thumb)组成。用户可以通过点击或拖动滑块来调整数值。…

ROS2学习笔记|Python实现订阅消息并朗读的详细步骤

本教程将详细介绍如何使用 ROS 2 实现一个节点订阅另一个节点发布的消息&#xff0c;并将接收到的消息通过 espeakng 库进行朗读的完整流程。以下步骤假设你已经安装好了 ROS 2 环境&#xff08;以 ROS 2 Humble 为例&#xff09;&#xff0c;并熟悉基本的 Linux 操作。 注意&…

WPF封装常用的TCP、串口、Modbus、MQTT、Webapi、PLC通讯工具类

WPF封装常用通讯工具类 下面我将为您封装常用的TCP、串口、Modbus、MQTT、WebAPI和PLC通讯工具类,适用于WPF应用程序开发。 一、TCP通讯工具类 using System; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;public class TcpClientHelper : …

npm pnpm yarn 设置国内镜像

国内镜像 常用的国内镜像&#xff1a; 淘宝镜像 https://registry.npmmirror.com 腾讯云镜像​​ https://mirrors.cloud.tencent.com/npm/ 华为云镜像​​ https://repo.huaweicloud.com/repository/npm/ CNPM&#xff08;阿里系&#xff09; ​​ https://r.cnpmjs.org/ 清华…

P4552 [Poetize6] IncDec Sequence 题解

P4552 [Poetize6] IncDec Sequence - 洛谷 差分贪心 根据题目&#xff1a;一段区间都加1或减1 &#xff0c; 可以想到差分 构建差分数组&#xff1a;sub 我们要让除了sub[1] , 其他全是0 我们可以的操作是&#xff1a;l1 , r-1 or l-1 , r1 or 一个数1 / -1 所…

Power Query精通指南2:数据转换——透视/逆透视/分组、横向纵向合并数据、条件判断、处理日期时间

文章目录 七、常见数据转换7.1 逆透视7.1.1 逆透视操作7.1.2 重建透视表&#xff0c;更新数据7.1.3 三种逆透视方式&#xff08;逆透视列等价于逆透视其他列&#xff09; 7.2 透视7.3 拆分列7.3.1 将列拆分为多列7.3.2 将列拆分为多行7.3.3 拆分到列后逆透视&#xff08;保留列…

使用线性表实现通讯录管理

目录 &#x1f680;前言&#x1f99c;任务目标&#x1f31f;顺序表实现&#x1f40d;链表实现 &#x1f680;前言 大家好&#xff01;我是 EnigmaCoder。 本文介绍线性表的实验&#xff0c;使用顺序表和链表实现通讯录管理&#xff0c;包含初始化、插入、删除、查询、输出。 &a…

firewall docker 冲突问题解决(亲测有效)

# 关闭iptables&#xff0c;使用firewall systemctl disable iptables # 禁用服务 systemctl stop iptables # 关闭服务 systemctl status iptables # 查看服务状态 systemctl enable firewalld # 设置防火墙开机自启动 systemctl start firewalld # 开启服务 systemctl s…

[250428] Nginx 1.28.0 发布:性能优化、安全增强及新特性

目录 Nginx 1.28.0 稳定版发布主要亮点包括&#xff1a;功能增强&#xff1a;安全性改进&#xff1a;其他&#xff1a; Nginx 1.28.0 稳定版发布 Nginx 官方于 4 月 24 日发布了最新的 1.28.0 稳定版本。此版本基于之前的 1.27.x 主线分支&#xff0c;整合了多项新功能、性能优…

昇腾的CANN是什么?跟英伟达CUDA的有什么联系和区别?【浅谈版】

昇腾的CANN&#xff08;Compute Architecture for Neural Networks&#xff09;是华为专门为AI场景设计的异构计算架构&#xff0c;类似于英伟达的CUDA&#xff0c;但它针对的是华为自家的昇腾AI处理器&#xff08;Ascend系列&#xff09;。简单来说&#xff0c;CANN的作用是连…

C++ STL vector高级特性与实战技巧

引言 各位小伙伴们好&#xff01;上一篇博客我们介绍了vector的基础知识和常见操作&#xff0c;今天我们将更深入地探讨vector的高级特性、内存管理细节以及实战应用技巧。 想象一下vector就像一辆能自动变长的公交车&#xff0c;我们上一篇讲了如何上下车&#xff08;添加删…

使用PageHelper实现分页查询(详细)

一&#xff1a;需求分析与设计 1.1 产品原型 &#xff08;1&#xff09;分页展示&#xff0c;每页展示10条数据&#xff0c;根据员工姓名进行搜索 &#xff08;2&#xff09;业务规则 1.2 接口设计 &#xff08;1&#xff09;操作&#xff1a;查询&#xff0c;请求方式&#xf…

手搓传染病模型(SEICR)

模型描述 SEICR 模型是一种用于描述具有慢性期的传染病传播规律的数学模型。该模型将人群分为五个部分&#xff0c;分别是易感个体&#xff08;Susceptible&#xff0c;S&#xff09;、潜伏期个体&#xff08;Exposed&#xff0c;E&#xff09;、急性期感染个体&#xff08;In…

音视频开源项目列表

音视频开源项目列表 一、多媒体处理框架 通用音视频处理 FFmpeg - https://github.com/FFmpeg/FFmpeg 最强大的音视频处理工具库支持几乎所有格式的编解码提供命令行工具和开发库 GStreamer - https://gitlab.freedesktop.org/gstreamer/gstreamer 跨平台多媒体框架基于管道…

通往“共识空域”的系统伦理演化

随着低空经济逐步从分布式运营向跨区域联动发展&#xff0c;AI无人系统不再只在本地决策&#xff0c;而开始涉及跨城市、跨机构的任务调度与行为协调。这一趋势带来了新的伦理挑战&#xff1a;多系统之间如何达成行动共识&#xff1f;算法背后的价值判断标准能否统一&#xff1…

Elasticsearch 常用的 API 接口

文档类 API Index API &#xff1a;创建并建立索引&#xff0c;向指定索引添加文档。例如&#xff1a;PUT /twitter/tweet/1 &#xff0c;添加一个文档。 Get API &#xff1a;获取文档&#xff0c;通过索引、类型和 ID 获取文档。如GET /twitter/tweet/1。 DELETE API &…

【Vue】性能优化与调试技巧

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. Vue 性能优化与调试技巧1.1 使用 v-if 替代 v-show 控制条件渲染示例代码&#xff1a; 1.2 组件懒加载&#xff08;异步组件&#xff09;示例代码&#xff1a;效果分析图&#xff08;Mermaid 图表示&#xff09…