Java GUI开发全攻略:Swing、JavaFX与AWT

发布于:2025-05-15 ⋅ 阅读:(18) ⋅ 点赞:(0)

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