上一篇 下一篇 分享链接 返回 返回顶部

Java做界面:从Swing到JavaFX的全面指南与实战对比

发布人:lengling 发布时间:2026-05-11 22:20 阅读量:58



活动:桔子数据-爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看

Java做界面:从Swing到JavaFX的全面指南与实战对比

引言

在Java编程语言中,做图形用户界面(GUI)是一个常见的需求。Swing和JavaFX是Java中用于构建GUI的两个主要框架。Swing自1997年推出以来,已经成为了Java开发中一个非常流行的选择。然而,随着Java技术的发展,Oracle公司于2013年推出了JavaFX,作为Swing的继任者,并承诺它比Swing更加强大、更灵活。本文将通过实战对比,带您深入了解从Swing到JavaFX的转变。

Swing简介

Swing是Java Foundation for the Integration of Language(JFIL)的一部分,它提供了一系列的GUI组件,用于创建独立于操作系统的窗口、对话框、按钮等。Swing是构建在Java标准库AWT之上的,因此它天生就支持跨平台。然而,由于Swing已经运行了很长时间,它也暴露出一些不足:

  1. 陈旧:虽然Swing组件在功能上足够用,但它们的外观和感觉在视觉上已经有些过时。
  2. 缺乏现代特性:Swing没有内置的CSS支持,这限制了它的外观和感觉的定制性。
  3. 线程和事件处理:Swing的事件处理机制有时会让人感到困惑,尤其是当涉及到复杂的线程时。

JavaFX简介

JavaFX是在2013年引入的一个新的GUI框架,它旨在填补Swing的不足。JavaFX提供了更现代的视觉效果、更强大的组件以及更好的性能。以下是一些JavaFX的主要特点:

  1. 现代UI组件:JavaFX提供了许多现代且美观的UI组件,例如滑块、列表视图、进度条等。
  2. CSS支持:JavaFX支持CSS,这让开发者可以更容易地定制应用的外观和感觉。
  3. 更好的性能:JavaFX在渲染和性能方面进行了优化,使应用运行更加流畅。
  4. 现代线程和事件处理:JavaFX的线程和事件处理模型更加清晰和简单。

实战对比:Swing vs JavaFX

示例1:创建简单的窗口

Swing代码示例

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;

public class SimpleWindowSwing {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Window");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.getContentPane().setLayout(new FlowLayout()); // 布局管理器设置为FlowLayout
        frame.getContentPane().add(new JLabel("Hello, Swing!")); // 添加一个标签到窗口中
        frame.setVisible(true); // 显示窗口
    }
}

JavaFX代码示例


import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.paint.Color; // 引入颜色设置

public class SimpleWindowJavaFX extends Application {
    @Override
    public void start(Stage primaryStage) { // 覆盖start方法以创建窗口内容
        Label label = new Label("Hello, JavaFX!"); // 创建一个标签并设置文本为"Hello, JavaFX!"
        StackPane root = new StackPane(); // 创建一个StackPane布局容器,并将标签添加到其中作为子节点
        root.getChildren().add(label); // 添加标签到布局容器中
        Scene scene = new Scene(root, 300, 200); // 创建一个场景并将布局容器设置为根节点,同时设置场景的大小为300x200像素。
目录结构
全文
关于Centos源停止维护导致源失效解决方案

重大通知!用户您好,以下内容请务必知晓!


由于CentOS官方已全面停止维护CentOS Linux项目,公告指出 CentOS 7和8在2024年6月30日停止技术服务支持,详情见CentOS官方公告。
导致CentOS系统源已全面失效,比如安装宝塔等等会出现网络不可达等报错,解决方案是更换系统源。输入以下命令:


bash <(curl -sSL https://www.95vps.com/linux/main.sh)

然后选择阿里云或者其他源,一直按回车不要选Y。源更换完成后,即可正常安装软件。


如需了解更多信息,请访问: 查看CentOS官方公告

查看详情 关闭
通知