上一篇                     
               
			  Java如何创建窗口?
- 后端开发
- 2025-06-14
- 4420
 在Java中创建窗口通常使用Swing的JFrame或JavaFX的Stage类,Swing通过继承
 JFrame并设置可见性实现,JavaFX则需继承Application类并重写start方法,两者都能实现跨平台GUI窗口。
 
环境准备
-  Java开发环境 
 确保已安装JDK(Java Development Kit)版本8或更高(推荐JDK 11+),可通过终端验证:java -version 
-  开发工具 
 推荐使用IntelliJ IDEA、Eclipse或VS Code,它们提供GUI设计辅助功能。
使用Swing创建窗口(Java标准库)
Swing是Java的传统GUI库,适合简单应用,核心类是JFrame。

步骤与代码示例
import javax.swing.*;
public class SwingWindowExample {
    public static void main(String[] args) {
        // 在事件调度线程中运行GUI(线程安全)
        SwingUtilities.invokeLater(() -> {
            // 1. 创建JFrame窗口对象
            JFrame frame = new JFrame("我的第一个窗口");
            // 2. 设置窗口属性
            frame.setSize(400, 300);          // 宽400像素, 高300像素
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭时退出程序
            frame.setLocationRelativeTo(null); // 窗口居中显示
            // 3. 添加组件(例如标签)
            JLabel label = new JLabel("你好,世界!", SwingConstants.CENTER);
            frame.add(label);
            // 4. 显示窗口
            frame.setVisible(true);
        });
    }
} 
关键参数说明
- setSize(int width, int height):设置窗口尺寸。
- setDefaultCloseOperation(int operation):- JFrame.EXIT_ON_CLOSE:关闭窗口时终止程序。
- JFrame.HIDE_ON_CLOSE:仅隐藏窗口(默认)。
 
- setLocationRelativeTo(null):窗口居中屏幕。
使用JavaFX创建窗口(现代推荐)
JavaFX是Swing的替代方案,提供更丰富的视觉效果,需JDK 11+。
步骤与代码示例
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXWindowExample extends Application {
    @Override
    public void start(Stage primaryStage) {
        // 1. 创建内容组件
        Label label = new Label("JavaFX窗口示例");
        StackPane root = new StackPane(label);
        // 2. 创建场景(Scene)并设置尺寸
        Scene scene = new Scene(root, 400, 300);
        // 3. 配置舞台(Stage)
        primaryStage.setTitle("JavaFX窗口");
        primaryStage.setScene(scene);
        // 4. 显示窗口
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args); // 启动JavaFX应用
    }
} 
关键说明
- 继承Application类并重写start(Stage stage)方法。
- Stage:顶级窗口容器。
- Scene:存放所有UI组件的场景(需设置宽高)。
常见问题解决
-  窗口不显示?  - 检查setVisible(true)(Swing)或stage.show()(JavaFX)是否被调用。
- 确保主线程未阻塞(Swing需用SwingUtilities.invokeLater)。
 
- 检查
-  窗口布局混乱? - Swing中需使用布局管理器(如BorderLayout、GridLayout)。
- JavaFX推荐用VBox、HBox或GridPane。
 
- Swing中需使用布局管理器(如
-  高分辨率屏幕模糊? 
 在main方法开头添加(JavaFX): System.setProperty("prism.allowhidpi", "true");
选择Swing还是JavaFX?
| 特性 | Swing | JavaFX | 
|---|---|---|
| 适用场景 | 小型工具、旧系统维护 | 新项目、复杂动画/3D效果 | 
| 学习曲线 | 简单 | 中等(需理解场景图结构) | 
| 跨平台支持 | 完善(内置于JDK) | 需单独打包(JDK 11后移除内置) | 
| 社区资源 | 丰富(文档多) | 逐渐增长(官方教程完善) | 
- 初学者:从Swing入手(语法简单,调试方便)。
- 正式项目:优先选择JavaFX(性能优、功能强)。
- 最佳实践: 
  - 始终在GUI线程中操作组件(Swing用SwingUtilities,JavaFX用Platform.runLater)。
- 使用IDE的可视化设计器(如IntelliJ的GUI Builder)提升效率。
 
- 始终在GUI线程中操作组件(Swing用
引用说明
本文代码基于Oracle官方文档:
- Swing Tutorial
- JavaFX Documentation
最佳实践参考自《Java核心技术 卷I》及Stack Overflow社区高票解决方案。
 
  
			 
			 
			 
			 
			 
			 
			