直接上代码:
package net.cnki;
/**
* @author SongBin on 2019/3/21.
*/
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
public class MainApp extends Application {
private TrayIcon trayIcon;
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) throws Exception {
//添加系统托盘图标.
enableTray(primaryStage);
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("Main.fxml"));
Scene scene = new Scene(root, 600, 500);
scene.getStylesheets().add(getClass().getClassLoader().getResource("application.css").toExternalForm());
primaryStage.setTitle("知网抢面");
primaryStage.setScene(scene);
//设置窗口的图标.
javafx.scene.image.Image image1 = new javafx.scene.image.Image(getClass().getClassLoader().getResourceAsStream("static/images/33.png"));
primaryStage.getIcons().add(image1);
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent arg0) {
primaryStage.hide();
}
});
// primaryStage.show();
}
//右小角,最小化.
private void enableTray(final Stage stage) {
PopupMenu popupMenu = new PopupMenu();
java.awt.MenuItem openItem = new java.awt.MenuItem("显示");
java.awt.MenuItem hideItem = new java.awt.MenuItem("最小化");
java.awt.MenuItem quitItem = new java.awt.MenuItem("退出");
ActionListener acl = new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
java.awt.MenuItem item = (java.awt.MenuItem) e.getSource();
Platform.setImplicitExit(false); //多次使用显示和隐藏设置false
if (item.getLabel().equals("退出")) {
SystemTray.getSystemTray().remove(trayIcon);
Platform.exit();
return;
}
if (item.getLabel().equals("显示")) {
Platform.runLater(new Runnable() {
@Override
public void run() {
stage.show();
}
});
}
if (item.getLabel().equals("最小化")) {
Platform.runLater(new Runnable() {
@Override
public void run() {
stage.hide();
}
});
}
}
};
//双击事件方法
MouseListener sj = new MouseListener() {
public void mouseReleased(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
switch (e.getButton()) {
case MouseEvent.BUTTON1: {
System.out.println("托盘图标被鼠标左键被点击");
break;
}
case MouseEvent.BUTTON2: {
System.out.println("托盘图标被鼠标中键被点击");
break;
}
case MouseEvent.BUTTON3: {
System.out.println("托盘图标被鼠标右键被点击");
break;
}
default: {
break;
}
}
Platform.setImplicitExit(false); //多次使用显示和隐藏设置false
if (e.getClickCount() == 2) {
if (stage.isShowing()) {
Platform.runLater(new Runnable() {
@Override
public void run() {
stage.hide();
}
});
}else{
Platform.runLater(new Runnable() {
@Override
public void run() {
stage.show();
}
});
}
}
}
};
openItem.addActionListener(acl);
quitItem.addActionListener(acl);
hideItem.addActionListener(acl);
popupMenu.add(openItem);
popupMenu.add(hideItem);
popupMenu.add(quitItem);
try {
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
BufferedImage image = ImageIO.read(getClass().getClassLoader().getResourceAsStream("static/images/33.png"));
trayIcon = new TrayIcon(image, "自动备份工具", popupMenu);
// 托盘图标自适应尺寸
trayIcon.setImageAutoSize(true);
trayIcon.setToolTip("自动备份工具");
tray.add(trayIcon);
trayIcon.addMouseListener(sj);
}else{
System.out.println("当前系统不支持系统托盘");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载