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