JavaFx 任务栏托盘

JavaFx 是一种用于创建丰富的桌面应用程序的开发工具包,它提供了许多丰富的图形界面组件和功能。其中一个有用的功能是任务栏托盘,它允许你在任务栏中显示一个小图标,以及与其相关的菜单和操作。

在本文中,我们将介绍如何使用 JavaFx 创建一个具有任务栏托盘的应用程序,并提供一些代码示例来帮助你理解。

创建任务栏托盘

首先,我们需要导入 JavaFx 库,并创建一个 JavaFx 应用程序。下面是一个简单的代码示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TrayApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        // 创建一个按钮
        Button button = new Button("Click me!");

        // 创建一个根容器
        StackPane root = new StackPane();
        root.getChildren().add(button);

        // 创建一个场景
        Scene scene = new Scene(root, 300, 200);

        // 设置主舞台的场景
        primaryStage.setScene(scene);
        primaryStage.setTitle("Tray App");
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上面的示例中,我们创建了一个简单的 JavaFx 应用程序,其中包含一个按钮。现在,我们将为此应用程序添加任务栏托盘。

添加任务栏托盘

为了在 JavaFx 应用程序中添加任务栏托盘,我们需要使用 SystemTray 类和 TrayIcon 类。下面是一个示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.awt.*;
import java.awt.TrayIcon.MessageType;

public class TrayApp extends Application {

    private TrayIcon trayIcon;

    @Override
    public void start(Stage primaryStage) throws Exception {
        // 创建一个按钮
        Button button = new Button("Click me!");

        // 创建一个根容器
        StackPane root = new StackPane();
        root.getChildren().add(button);

        // 创建一个场景
        Scene scene = new Scene(root, 300, 200);

        // 设置主舞台的场景
        primaryStage.setScene(scene);
        primaryStage.setTitle("Tray App");
        primaryStage.setOnCloseRequest(event -> {
            hide(primaryStage);
        });

        // 创建任务栏托盘
        if (SystemTray.isSupported()) {
            SystemTray tray = SystemTray.getSystemTray();

            // 创建一个图标
            Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("icon.png"));
            trayIcon = new TrayIcon(image, "Tray App");
            trayIcon.setImageAutoSize(true);

            // 创建一个弹出菜单
            PopupMenu popupMenu = new PopupMenu();

            // 创建一个退出菜单项
            MenuItem exitItem = new MenuItem("Exit");
            exitItem.addActionListener(event -> {
                System.exit(0);
            });
            popupMenu.add(exitItem);

            // 将菜单添加到托盘图标
            trayIcon.setPopupMenu(popupMenu);

            // 将图标添加到托盘
            tray.add(trayIcon);

            // 单击图标时显示主舞台
            trayIcon.addActionListener(event -> {
                Platform.runLater(() -> {
                    primaryStage.show();
                    primaryStage.toFront();
                });
            });
        }

        primaryStage.show();
    }

    private void hide(final Stage stage) {
        Platform.runLater(() -> {
            if (SystemTray.isSupported()) {
                stage.hide();
            } else {
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上面的代码中,我们创建了一个 TrayIcon 对象,并将其与一个图标和一个弹出菜单关联起来。当用户单击图标时,我们将显示主舞台,并将其置于前台。

饼状图

在 JavaFx 中,我们可以使用 PieChart 类来创建饼状图。下面是一个简单的示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class PieChartApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        // 创建一个饼状图
        Pie