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

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 应用程序。每种方式都有其特定的使用场景和优势,开发者可以根据需求选择合适的工具。

http://www.xdnf.cn/news/6324.html

相关文章:

  • Kubernetes控制平面组件:Kubelet详解(四):gRPC 与 CRI gRPC实现
  • nginx定义error 403页面
  • Java—封装、继承与多态
  • TypeScript装饰器:从入门到精通
  • LangChain4j入门(一)SpringBoot整合并接入Deepseek
  • 前端~三维地图(cesium)动态材质飞线
  • nacos:服务无法注册到nacos服务中心
  • Linux 动静态库详解
  • JS 中 Object.keys() 和 Object.values() 的深度解析与应用
  • 蓝桥杯 17. 修改数组
  • 【Linux高级IO】多路转接之epoll
  • Linux——mysql主从复制与读写分离
  • 人工智能+ERP:政策新规下企业智能化转型路径
  • 【vue】axios网络请求介绍
  • 【2025版】Spring Boot面试题
  • C语言_自定义类型:结构体
  • (4)python开发经验
  • (十七)Java日期时间API全面解析:从传统Date到现代时间处理
  • Ros2 - Moveit2 - DeepGrasp(深度抓握)
  • golang -- 如何让main goroutine等一等
  • 数智驱动——AI:企业数字化转型的“超级引擎”
  • FreeRTOS学习笔记
  • 【Java学习笔记】finalize方法
  • 前后端分离博客 Weblog 项目实战
  • 【AI大模型】赋能【传统业务】
  • Java基础语法之数组
  • Windows下Docker安装portainer
  • 64. 最小路径和
  • Shell 脚本中的通道号(文件描述符)
  • maven项目, idea右上角一直显示gradle的同步标识, 如何去掉