jdk8 javafx 关闭窗口时缩小到托盘区 代码
时间: 2023-10-07 14:04:23 浏览: 216
Javafx2 系统托盘实现
4星 · 用户满意度95%
下面是一个简单的 JavaFX 程序,当关闭主窗口时,会将程序缩小到系统托盘区:
```java
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.awt.*;
import java.awt.TrayIcon.MessageType;
public class TrayIconDemo extends Application {
private TrayIcon trayIcon;
@Override
public void start(Stage primaryStage) {
// 创建系统托盘图标
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("icon.png"));
trayIcon = new TrayIcon(image, "Tray Demo");
trayIcon.setImageAutoSize(true);
trayIcon.setToolTip("Tray Demo");
// 添加鼠标点击事件
trayIcon.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
Platform.runLater(() -> {
primaryStage.show();
tray.remove(trayIcon);
});
}
});
// 添加系统托盘图标
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("无法添加系统托盘图标");
}
}
// 创建 JavaFX 窗口
Label label = new Label("Hello, World!");
StackPane root = new StackPane();
root.getChildren().add(label);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Demo");
primaryStage.setScene(scene);
// 添加窗口关闭事件
primaryStage.setOnCloseRequest(event -> {
event.consume();
Platform.runLater(() -> {
primaryStage.hide();
trayIcon.displayMessage("Tray Demo", "程序已最小化到系统托盘", MessageType.INFO);
});
});
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
这个程序创建了一个系统托盘图标,并且当主窗口被关闭时,会将程序缩小到系统托盘区。当点击系统托盘图标时,会恢复主窗口。这里使用了 AWT 的 TrayIcon 类来实现系统托盘的功能。
阅读全文