当前位置: 首页 > article >正文

GUI实验

 题目:

        编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。

分析:

  1. 导入所需的Java库:程序使用了 javax.swing 包中的一些类来创建图形用户界面。

  2. 创建一个 JFrame 对象:JFrame 是一个窗口容器,用来放置按钮和标签等组件。

  3. 创建一个 JLabel 对象:JLabel 用来显示"你好"和"再见"这两个文本内容。

  4. 创建一个 JButton 对象:JButton 是一个按钮,用来触发切换标签内容的操作。

  5. 设置按钮的 ActionListener:通过为按钮添加 ActionListener,实现在按钮点击时切换标签内容的功能。

  6. 在 ActionListener 中编写逻辑:在 ActionListener 中编写逻辑来实现按钮点击时标签内容的切换。通过控制一个 boolean 变量来确定当前应该显示"你好"还是"再见"。

  7. 将组件添加到 JFrame 中:将创建的标签和按钮添加到 JFrame 中,并设置布局为 null,以便手动设置组件的位置和大小。

  8. 设置 JFrame 可见:最后将 JFrame 设置为可见状态,以显示图形用户界面。

难点分析:

  1. 理解图形用户界面的基本组件:需要对 JFrame、JLabel 和 JButton 等图形用户界面组件有一定的了解,以便正确使用和设置它们。

  2. 了解 ActionListener 接口和事件处理:需要理解 ActionListener 接口以及如何通过为按钮添加 ActionListener 来处理按钮点击事件。在 ActionListener 的 actionPerformed 方法中编写逻辑也需要一些熟悉。

  3. 处理标签文本的切换:需要在 ActionListener 中编写逻辑来切换标签的文本内容。这里使用了一个 boolean 变量来跟踪当前应该显示的文本内容,并根据其值来更新标签的文本。

  4. 设置布局和组件位置:在本示例中,使用了 null 布局,这意味着需要手动设置组件的位置和大小。对于初学者来说,可能需要花一些时间来理解和实践如何正确设置组件的位置。

代码:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class GreetingApp {private static JLabel label;public static void main(String[] args) {JFrame frame = new JFrame("Greeting App");frame.setSize(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);label = new JLabel("你好");label.setBounds(100, 50, 100, 30);frame.add(label);JButton button = new JButton("切换");button.setBounds(100, 100, 100, 30);button.addActionListener(new ActionListener() {boolean isHello = true;@Overridepublic void actionPerformed(ActionEvent e) {if (isHello) {label.setText("再见");isHello = false;} else {label.setText("你好");isHello = true;}}});frame.add(button);frame.setLayout(null);frame.setVisible(true);}
}

结果:

http://www.lryc.cn/news/2383279.html

相关文章:

  • 量子计算 | 量子密码学的挑战和机遇
  • linux系统查看硬盘序列号
  • 分享一些多模态文档解析思路
  • CSS 选择器入门
  • 【Django】Django DRF 中如何手动调用分页器返回分页数据(APIView,action场景)
  • AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
  • Vue组件通信方式及最佳实践
  • 【实用教程】如何快速搭建一套私有的埋点系统?
  • 深入解析 Uniswap:自动做市商模型的数学推导与智能合约架构
  • spring配置并使用rabbitmq
  • Android开发——不同布局的定位属性 与 通用属性
  • React 19版本refs也支持清理函数了。
  • Python高效网络爬虫开发指南
  • Python爬虫实战:获取国家统计网最新消费数据并分析,为从业者做参考
  • Python中使用uv创建环境及原理详解
  • 阿尔泰科技助力电厂——520为爱发电!
  • 【Golang笔记02】函数、方法、泛型、接口学习笔记
  • C#语法篇 :基类子类转换,成员变化情况
  • 【漫话机器学习系列】264.内距(又称四分位差)Interquartile Range
  • 海外盲盒系统开发:重构全球消费体验的科技引擎
  • 高噪声下扩展边缘检测算子对检测边缘的影响
  • vuejs处理后端返回数字类型精度丢失问题
  • mysql数据库-中间件MyCat
  • 手搓四人麻将程序
  • PotPlayer 安装 madVR、LAV Filters 以提升解码能力和视频音频效果
  • 阿里云域名 绑定 华为云服务器ip
  • windows7安装node18
  • Maven配置安装
  • 小刚说C语言刷题—1153 - 查找“支撑数”
  • Kind方式部署k8s单节点集群并创建nginx服务对外访问