Java GUI 编程全攻略:Swing 与 JavaFX 入门实战

  • AWT(Abstract Window Toolkit):早期库,功能有限。
  • Swing:更现代,功能丰富,是 AWT 的扩展。
  • JavaFX:新一代 GUI 框架,支持样式、动画、图形等。

🎯 本文将重点介绍 Swing 和 JavaFX 的基本用法和项目实战。


二、Swing 基础:轻量级 GUI 编程

2.1 Swing 的核心组件

组件

说明

JFrame

主窗口

JPanel

面板容器

JLabel

标签

JButton

按钮

JTextField

文本输入框

JTextArea

多行文本输入

2.2 创建一个简单窗口

代码语言:javascript

AI代码解释

java复制编辑import javax.swing.*; public class HelloSwing { public static void main(String[] args) { JFrame frame = new JFrame("Swing 示例"); frame.setSize(400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("你好,Swing!"); frame.add(label); frame.setVisible(true); } }

🖼️ 运行效果:

代码语言:javascript

AI代码解释

diff复制编辑+------------------------+ | 你好,Swing! | +------------------------+

2.3 添加按钮与事件响应

代码语言:javascript

AI代码解释

java复制编辑JButton button = new JButton("点击我"); button.addActionListener(e -> { JOptionPane.showMessageDialog(frame, "按钮被点击了!"); }); frame.add(button);

📌 事件监听机制是 Swing 的核心,基于观察者模式。


2.4 布局管理器概述

Swing 提供多种布局方式:

布局管理器

说明

FlowLayout

流式排列,默认布局

BorderLayout

上下左右中五个区域

GridLayout

表格状布局

BoxLayout

单行/单列组件排列

null

自由布局(需 setBounds)

示例:

代码语言:javascript

AI代码解释

java复制编辑frame.setLayout(new FlowLayout()); frame.add(new JButton("按钮1")); frame.add(new JButton("按钮2"));

三、Swing 项目实战:记事本应用

3.1 基本功能设计

功能需求:

  • 文本编辑区域
  • 打开 / 保存 文件
  • 清空 / 退出 功能
3.2 UI 结构示意图:

代码语言:javascript

AI代码解释

diff复制编辑+-----------------------------+ | 菜单栏:文件 编辑 | +-----------------------------+ | | | JTextArea | | | +-----------------------------+
3.3 实现代码:

代码语言:javascript

AI代码解释

java复制编辑public class SimpleNotepad { public static void main(String[] args) { JFrame frame = new JFrame("记事本"); JTextArea textArea = new JTextArea(); frame.add(new JScrollPane(textArea)); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("文件"); JMenuItem openItem = new JMenuItem("打开"); JMenuItem saveItem = new JMenuItem("保存"); JMenuItem exitItem = new JMenuItem("退出"); openItem.addActionListener(e -> { JFileChooser chooser = new JFileChooser(); if (chooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) { try { File file = chooser.getSelectedFile(); textArea.setText(Files.readString(file.toPath())); } catch (IOException ex) { ex.printStackTrace(); } } }); saveItem.addActionListener(e -> { JFileChooser chooser = new JFileChooser(); if (chooser.showSaveDialog(frame) == JFileChooser.APPROVE_OPTION) { try { File file = chooser.getSelectedFile(); Files.writeString(file.toPath(), textArea.getText()); } catch (IOException ex) { ex.printStackTrace(); } } }); exitItem.addActionListener(e -> System.exit(0)); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(exitItem); menuBar.add(fileMenu); frame.setJMenuBar(menuBar); frame.setSize(500, 400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }

✅ 实现了基本的记事本功能,适合初学 Swing 项目开发。


四、JavaFX:现代 Java GUI 新选择

4.1 JavaFX 与 Swing 的对比

对比点

Swing

JavaFX

样式支持

较弱

支持 CSS

UI 构建方式

代码手写

可使用 FXML 可视化

动画支持

基本

强大

性能表现

中等

更好


Read more

Rust嵌入式开发实战——从ARM裸机编程到RTOS应用

Rust嵌入式开发实战——从ARM裸机编程到RTOS应用

Rust嵌入式开发实战——从ARM裸机编程到RTOS应用 一、学习目标与重点 1.1 学习目标 1. 理解嵌入式开发基础:深入掌握嵌入式系统的定义、特点、架构(ARM、RISC-V),对比Rust与传统嵌入式开发语言(C/C++)的优势 2. 搭建Rust嵌入式开发环境:安装交叉编译工具链(arm-none-eabi、riscv64-unknown-elf)、调试工具(OpenOCD、GDB),配置VS Code/CLion开发环境 3. 掌握Rust裸机编程:使用cortex-m、cortex-m-rt库进行ARM裸机开发,实现GPIO操作、串口通信、中断处理 4. 学习RTOS开发:使用RTIC(Real-Time Interrupt-driven Concurrency)实现多任务编程,理解任务调度、资源共享、中断管理 5. 实战嵌入式项目:结合STM32F4xx系列开发板、Raspberry

By Ne0inhk

Spring IoC&DI

目录 1.Spring是什么? 2.详解Ioc 2.1Bean的存储 2.2 Bean Name默认命名规则 2.3 扫描路径 2.4@Autowired和@Resource区别 2.5 @Autowired查找Bean顺序 3.详解DI Spring三种依赖注入方式优缺点对比 1.Spring是什么? Spring 是一个开源的 Java 开发框架,核心目标是简化企业级应用开发。它提供了模块化工具(如 Spring MVC、Spring Security、Spring Data 等),让开发者更专注于业务逻辑,而非重复的底层代码。也就是包含了众多方法的IoC容器, 容器是什么? 在 Spring 中,容器是一个 装对象的“盒子”

By Ne0inhk
Rust微服务架构实战——gRPC通信、服务发现与容器编排

Rust微服务架构实战——gRPC通信、服务发现与容器编排

第12篇:Rust微服务架构实战——gRPC通信、服务发现与容器编排 一、学习目标与重点 1.1 学习目标 1. 理解微服务架构:深入学习微服务的核心概念、优缺点、架构模式,掌握微服务与单体架构的区别 2. 掌握gRPC通信:熟练使用Tonic(Rust的gRPC实现)定义.proto文件、生成服务端和客户端代码,实现同步/异步通信 3. 实现服务发现与负载均衡:使用Consul或etcd实现服务注册与发现,使用Ribbon或Nginx实现负载均衡 4. 容器编排与部署:学习Docker Swarm或Kubernetes的核心概念,使用Docker Compose或Kubernetes YAML文件部署微服务 5. 实战微服务开发:结合真实场景编写用户管理、订单管理、支付管理三个微服务,实现gRPC通信、服务发现、负载均衡 6. 监控与运维:使用Prometheus+Grafana监控微服务,使用ELK Stack收集和分析日志 1.

By Ne0inhk
OpenClaw 架构深度拆解:工程优雅的本地优先 AI Agent,为何难入企业级生产环境?

OpenClaw 架构深度拆解:工程优雅的本地优先 AI Agent,为何难入企业级生产环境?

2026 年,AI Agent 赛道早已从概念炒作进入工程化落地的深水区。无数项目沉迷于堆功能、炒概念,把 Agent 做成了花里胡哨的聊天玩具,却始终解决不了最核心的问题:执行不可靠、状态不可控、结果不可复现。而近期开源的 OpenClaw,却以一套极简、清晰、职责分离的分层架构,成为了业内公认的 “最干净的 Agent 运行时” 参考设计。 它以本地优先为核心理念,在工程层面做出了极佳的示范,解决了当前绝大多数 Agent 框架普遍存在的竞态 bug、上下文溢出、执行混乱等痛点;但与此同时,它的执行模型也带来了巨大的安全攻击面,在企业级场景的安全与治理上,存在致命的短板。 本文将从核心定位、五层架构全拆解、工程设计亮点、企业级安全短板、实践启示五个维度,深度解析这个本地优先的 AI Agent 系统,帮你吃透它的设计精髓,同时规避落地过程中的安全风险。 一、OpenClaw 的核心定位:

By Ne0inhk