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