Java GUI开发全攻略:Swing、JavaFX与AWT
Swing 界面开发
Swing 是 Java 中用于创建图形用户界面(GUI)的库。它提供了丰富的组件,如按钮、文本框、标签等。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class SwingExample {public static void main(String[] args) {// 创建 JFrame 窗口JFrame frame = new JFrame("Swing Example");frame.setSize(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建 JPanel 面板JPanel panel = new JPanel();frame.add(panel);// 创建 JLabel 标签JLabel label = new JLabel("Enter your name:");panel.add(label);// 创建 JTextField 文本框JTextField textField = new JTextField(20);panel.add(textField);// 创建 JButton 按钮JButton button = new JButton("Submit");panel.add(button);// 添加按钮点击事件button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String name = textField.getText();JOptionPane.showMessageDialog(frame, "Hello, " + name);}});// 显示窗口frame.setVisible(true);}
}
JavaFX 界面开发
JavaFX 是 Java 的另一个 GUI 框架,提供了更现代化的界面设计和丰富的功能。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;public class JavaFXExample extends Application {@Overridepublic void start(Stage primaryStage) {// 创建 VBox 布局VBox vbox = new VBox(10);// 创建 Label 标签Label label = new Label("Enter your name:");vbox.getChildren().add(label);// 创建 TextField 文本框TextField textField = new TextField();vbox.getChildren().add(textField);// 创建 Button 按钮Button button = new Button("Submit");vbox.getChildren().add(button);// 添加按钮点击事件button.setOnAction(event -> {String name = textField.getText();System.out.println("Hello, " + name);});// 创建 Scene 场景Scene scene = new Scene(vbox, 300, 200);// 设置 Stage 标题和场景primaryStage.setTitle("JavaFX Example");primaryStage.setScene(scene);// 显示窗口primaryStage.show();}public static void main(String[] args) {launch(args);}
}
AWT 界面开发
AWT(Abstract Window Toolkit)是 Java 最早的 GUI 工具包,虽然现在较少使用,但在某些场景下仍然有用。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class AWTExample {public static void main(String[] args) {// 创建 Frame 窗口Frame frame = new Frame("AWT Example");frame.setSize(300, 200);// 创建 Panel 面板Panel panel = new Panel();frame.add(panel);// 创建 Label 标签Label label = new Label("Enter your name:");panel.add(label);// 创建 TextField 文本框TextField textField = new TextField(20);panel.add(textField);// 创建 Button 按钮Button button = new Button("Submit");panel.add(button);// 添加按钮点击事件button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String name = textField.getText();System.out.println("Hello, " + name);}});// 显示窗口frame.setVisible(true);}
}
Web 前端与 Java 后端交互
Java 后端可以通过 Servlet 或 Spring Boot 与前端进行交互,前端通常使用 HTML、CSS 和 JavaScript。
// Spring Boot 控制器示例
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class WebController {@GetMapping("/greet")public String greet(@RequestParam String name) {return "Hello, " + name;}
}
<!-- HTML 前端示例 -->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Greeting Page</title>
</head>
<body><h1>Enter your name:</h1><input type="text" id="nameInput"><button onclick="greet()">Submit</button><p id="greeting"></p><script>function greet() {const name = document.getElementById('nameInput').value;fetch(`/greet?name=${name}`).then(response => response.text()).then(text => document.getElementById('greeting').innerText = text);}</script>
</body>
</html>
使用 Thymeleaf 进行模板渲染
Thymeleaf 是一个用于 Java 的模板引擎,常用于 Spring Boot 项目中渲染 HTML 页面。
// Spring Boot 控制器
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@Controller
public class ThymeleafExample {@GetMapping("/greet")public String greet(@RequestParam String name, Model model) {model.addAttribute("name", name);return "greet";}
}
<!-- Thymeleaf 模板 greet.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Greet</title>
</head>
<body><h1>Hello, <span th:text="${name}"></span></h1>
</body>
</html>
使用 JSP 进行页面渲染
JSP(JavaServer Pages)是一种用于创建动态网页的技术,允许在 HTML 中嵌入 Java 代码。
// Servlet 示例
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/greet")
public class JSPExample extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");request.setAttribute("name", name);request.getRequestDispatcher("/greet.jsp").forward(request, response);}
}
<!-- JSP 页面 greet.jsp -->
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Greet</title>
</head>
<body><h1>Hello, <%= request.getAttribute("name") %></h1>
</body>
</html>
总结
Java 提供了多种前端界面开发方式,Swing 和 JavaFX 适用于桌面应用程序,AWT 是早期的 GUI 工具包,而 Web 前端与 Java 后端的交互则适用于 Web 应用程序。每种方式都有其特定的使用场景和优势,开发者可以根据需求选择合适的工具。
相关文章:
Java GUI开发全攻略:Swing、JavaFX与AWT
Swing 界面开发 Swing 是 Java 中用于创建图形用户界面(GUI)的库。它提供了丰富的组件,如按钮、文本框、标签等。 import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class SwingExa…...

WPF之集合绑定深入
文章目录 引言ObservableCollection<T>基础什么是ObservableCollectionObservableCollection的工作原理基本用法示例ObservableCollection与MVVM模式ObservableCollection的局限性 INotifyCollectionChanged接口深入接口定义与作用NotifyCollectionChangedEventArgs详解自…...
LeetCode 每日一题 3341. 到达最后一个房间的最少时间 I + II
3341. 到达最后一个房间的最少时间 I II 有一个地窖,地窖中有 n x m 个房间,它们呈网格状排布。 给你一个大小为 n x m 的二维数组 moveTime ,其中 moveTime[i][j] 表示在这个时刻 以后 你才可以 开始 往这个房间 移动 。你在时刻 t 0 时从…...

(C语言)超市管理系统(测试2版)(指针)(数据结构)(清屏操作)
目录 前言: 源代码: product.h product.c fileio.h fileio.c main.c 代码解析: 一、程序结构概述 二、product.c 函数详解 1. 初始化商品列表 Init_products 2. 添加商品 add_product 3. 显示商品 display_products 4. 修改商品 mo…...
什么是虚拟同步发电机
虚拟同步发电机(Virtual Synchronous Generator, VSG) 是一种基于电力电子技术的先进控制策略,通过模拟传统同步发电机的机电特性和动态行为,使逆变器或储能系统能够像传统发电机一样为电网提供惯性支撑、频率调节和电压稳定性支持…...
Python字符串全面指南:从基础到高级
文章目录 Python字符串全面指南:从基础到高级1. 字符串基础概念2. 字符串的基本操作2.1 字符串拼接2.2 字符串索引和切片 3. 字符串常用方法3.1 大小写转换3.2 字符串查找和替换3.3 字符串分割和连接3.4 字符串格式化3.5 字符串验证 4. 字符串的不可变性5. 字符串编…...
基于大模型的TIA诊疗全流程智能决策系统技术方案
目录 一、多模态数据融合与预处理系统1.1 数据接入模块1.2 数据预处理伪代码二、TIA智能预测模型系统2.1 模型训练流程2.2 混合模型架构伪代码三、术中智能监测系统3.1 实时监测流程3.2 实时预测伪代码四、智能诊疗决策系统4.1 手术方案推荐流程4.2 麻醉方案生成伪代码五、预后…...

编译openssl源码
openssl版本 1.1.1c windows 安装环境 perl 先安装perl,生成makefile需要 https://strawberryperl.com/releases.html nasm nasm 也是生成makefile需要 https://www.nasm.us/ 安装完perl输入一下nasm,看看能不能找到,找不到的话需要配…...
CMake入门与实践:现代C++项目的构建利器
文章目录 CMake入门与实践:现代C项目的构建利器引言什么是CMake?快速入门:从Hello World开始1. 安装CMake2. 最小项目示例3. 构建项目 核心概念详解1. 项目结构组织2. 常用指令3. 变量与条件控制 进阶技巧1. 多目录项目管理2. 集成第三方库3.…...

OpenCV实现数字水印的相关函数和示例代码
OpenCV计算机视觉开发实践:基于Qt C - 商品搜索 - 京东 实现数字水印的相关函数 用OpenCV来实现数字水印功能,需要使用一些位操作函数,我们需要先了解一下这些函数。 1. bitwise_and函数 bitwise_and函数是OpenCV中的位运算函数之一&…...
BMS工具箱用来执行贝叶斯模型平均(BMA)计算模块
贝叶斯模型平均(Bayesian Model Averaging,BMA)是一种用于处理模型不确定性的统计方法,通过结合多个模型的预测结果来提高预测的准确性和鲁棒性。在 MATLAB 中,可以使用专门的工具箱(如 BMS 工具箱…...

坐席业绩数据分析
豆包提示词: 使用papaparse.js,chart.js,tailwindcss和font-awesome,生成一个可以交互的简洁且可以运行的HTML代码,不要输出无关内容。 具体要求如下: 1、按坐席姓名输出业绩折线图。 2、系统导航区域&…...
国产大模型 “五强争霸”,决战 AGI
中国 AI 大模型市场正经历一场史无前例的洗牌!曾经 “百模混战” 的局面已落幕,字节、阿里、阶跃星辰、智谱和 DeepSeek 五大巨头强势崛起,形成 “基模五强” 新格局。这场竞争不仅是技术实力的较量,更是资源、人才与生态的全面博…...

怎样将MM模块常用报表设置为ALV默认格式(MB52、MB5B、ME2M、ME1M等)
【SAP系统研究】 对SAP系统中的报表,最方便的格式就是ALV了,可排序、可导出,非常友好。 但有些常见报表却不是默认ALV界面的,譬如MB52: 是不是有点别扭?但其实是可以后台配置进行调整的。 现将一些常用报表修改为默认ALV的方法进行总结,便于大家使用。 一、MB52、MB5…...
Spark 集群配置、启动与监控指南
Spark 集群的配置和启动需要几个关键步骤。以下是完整的操作流程,包含配置修改、集群启动、任务提交和常见错误排查方法。 1. 修改 Spark 配置文件 首先需要编辑 Spark 配置文件,设置集群参数: bash # 进入 Spark 配置目录 cd $SPARK_HOM…...
前端面试每日三题 - Day 34
这是我为准备前端/全栈开发工程师面试整理的第34天每日三题练习: ✅ 题目1:WebGPU图形编程实战指南 核心概念 // WebGPU初始化流程 const adapter await navigator.gpu.requestAdapter(); const device await adapter.requestDevice();// 渲染管线配…...
比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
合肥某车间凌晨两点依然灯火通明,工程师正在调试的银白色设备,即将颠覆整个电动车行业 —— 比亚迪全固态电池产线的曝光,标志着中国新能源汽车产业正式迈入 “技术定义市场” 的新纪元。 一、技术突破的底层逻辑 比亚迪全固态电池的核心竞…...

Arduino使用红外收发模块
目录 Arduino UNO连接红外发射模块: Arduino D1连接红外接收模块: 有一个Arduini UNO板子和一个Arduino D1板子,我想通过红外发射模块和红外接收模块让他们进行通信。 先看结果: Arduino UNO连接红外发射模块: 发射模…...
【强化学习】强化学习算法 - 马尔可夫决策过程
马尔可夫决策过程 (Markov Decision Process, MDP) 1. MDP 原理介绍 马尔可夫决策过程 (MDP) 是强化学习 (Reinforcement Learning, RL) 中用于对序贯决策 (Sequential Decision Making) 问题进行数学建模的标准框架。它描述了一个智能体 (Agent) 与环境 (Environment) 交互的…...

机器学习 Day16 聚类算法 ,数据降维
聚类算法 1.简介 1.1 聚类概念 无监督学习:聚类是一种无监督学习算法,不需要预先标记的训练数据 相似性分组:根据样本之间的相似性自动将样本归到不同类别 相似度度量:常用欧式距离作为相似度计算方法 1.2 聚类vs分类 聚类&…...
开源Heygem本地跑AI数字人视频教程
图文教程: 点击跳转 视频教程 资料包下载 点击下载:...

软件测试——面试八股文(入门篇)
今天给大家分享软件测试面试题入门篇,看看大家能答对几题 一、 请你说一说测试用例的边界 参考回答: 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下ÿ…...

Yolov8的详解与实战-深度学习目标检测
Yolov8的详解与实战- 文章目录 摘要 模型详解 C2F模块 Loss head部分 模型实战 训练COCO数据集 下载数据集 COCO转yolo格式数据集(适用V4,V5,V6,V7,V8) 配置yolov8环境 训练 测试 训练自定义数据集 Labelme…...

Python(1) 做一个随机数的游戏
有关变量的,其实就是 可以直接打印对应变量。 并且最后倒数第二行就是可以让两个数进行交换。 Py快捷键“ALTP 就是显示上一句的代码。 —————————————————————————————— 字符串 用 双引号或者单引号 。 然后 保证成双出现即可 要是…...

【Bootstrap V4系列】学习入门教程之 组件-导航条(Navbar)
Bootstrap V4系列 学习入门教程之 组件-导航条(Navbar) 导航条(Navbar)一、How it works二、Supported content 支持的内容2.1 Brand 品牌2.2 Nav 导航2.3 Forms 表格 三、Color schemes 配色方案四、Containers 容器五、Placemen…...

[Java实战]Spring Security 添加验证码(二十三)
[Java实战]Spring Security 添加验证码(二十三) 在现代的 Web 应用中,验证码是防止恶意攻击(如暴力破解、自动注册等)的重要手段之一。Spring Security 是一个功能强大的安全框架,提供了用户认证、授权等功…...

万文c++继承
1、继承的概念与定义 1.1继承的概念 继承:是c代码复用的手段,允许在原有的基础上扩展,在此之前都是函数层次的复用,继承是类设计层次的复用。 下面有两个类Student和Teacher都有姓名/地址/电话/年龄等成员变量。都有identity身…...
HTTP GET报文解读
考虑当浏览器发送一个HTTP GET报文时,通过Wireshark 俘获到下列ASCII字符串: GET /cs453/index.html HTTP/1.1 Host: gaia.cs.umass.edu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Acc…...

Linux grep -r 查找依赖包是否存在依赖类 Class
方法一:通过 Linux ,grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目录下执行,grep -r, flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…...

41:像素坐标与实际坐标转化
采用上面的算子 将像素坐标点转换为实际坐标 image_points_to_world_plane(CamParam, Worldpose, Row, Column, m, X, Y) 第一个参数:标定得到的内参--根据标定助手得到的 第二个参数:标定得到的外参--根据标定助手得到的 第三个参数:计算…...