求教javafx 做的系统托盘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教javafx 做的系统托盘相关的知识,希望对你有一定的参考价值。

怎么将一个javafx程序隐藏到系统托盘,再显示出来

参考技术A 托盘和窗体是独立的两部分,可以用swing实现托盘,这部分不需要javafx。

ava SystemTray类(系统托盘)和TrayIcon类(托盘图标)

利用SystemTray类可以访问系统托盘,每个Java应用程序在运行时都会被分配一个该类的实例,可以通过该类的静态方法getSystemTray()获得。某些系统可能不支持系统托盘功能,此时可以通过静态方法isSupported()判断当前系统是否支持该功能,如果支持则返回true,否则返回false。

通过方法add(TrayIcon trayIcon)可以为当前应用程序添加托盘图标到系统托盘;可以为一个应用程序添加多个托盘图标;当不再需要托盘图标时,可以通过方法remove(TrayIcon trayIcon)移除指定的托盘图标。

每一个Java应用都会包含一个SystemTray实例,这个不需要你去实例化。

SystemTray.isSupported();// 判断当前平台是否支持系统托盘
SystemTray tray = SystemTray.getSystemTray();// 获取到当前平台的系统托盘

TrayIcon 类的构造方法
TrayIcon trayIcon = new TrayIcon(Image image);//创建只具有托盘图标的对象
TrayIcon trayIcon = new TrayIcon(Image image, String tooltip,);//创建具有托盘图标和提示信息的对象
TrayIcon trayIcon = new TrayIcon(Image image, String tooltip, PopupMenu popup);//创建具有托盘图标、提示信息、弹出菜单的对象(注意:是 PopupMenu 类 弹出菜单,不是 JPopupMenu 类 )

TrayIcon 类的常用方法
setImageAutoSize(true);// 设置自动调整图标大小以适应当前平台的托盘图标显示

setImage(Image image);// 根据需要可在随时改变显示的图标

setPopupMenu(PopupMenu popup);// 根据需要可随时改变点击时的弹出菜单

addActionListener(ActionListener listener);// 添加托盘图标的动作监听器(鼠标右键的点击监听)

addMouseListener(MouseListener listener);// 添加托盘图标的鼠标监听器(包括鼠标所有按键的监听)

add(trayIcon);// 添加托盘图标到系统托盘(一个应用程序可添加多个托盘图标)

remove(trayIcon);// 从系统托盘移除图标

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
 
import java.net.*;
import javax.swing.*;
 
public class t3 extends JFrame{
    
    public t3() {
        setTitle("选项卡面板");
        setBounds(400, 400, 400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        final JLabel label = new JLabel();
        label.setForeground(Color.black);//设置标签前景色
        label.setFont(new Font("微软雅黑", Font.BOLD, 16));//设置标签字体,大小,加粗
        label.setHorizontalAlignment(SwingConstants.CENTER);//设置标签内容居中对齐
        label.setText("请查看系统托盘中的变化!");
        
        add(label);
        
        setVisible(true);
    }
    
    public void Tray() throws AWTException{
        
        if(SystemTray.isSupported()) {//判断系统是否支持托盘图标
            
            URL resource = this.getClass().getResource("/black.jpg");//获取托盘图标
            ImageIcon icon = new ImageIcon(resource);
            PopupMenu pop = new PopupMenu();//创建弹出式菜单
            
            MenuItem menu = new MenuItem("退出");//创建菜单项
            menu.addActionListener(new ActionListener() {//给菜单项添加事件监听器,单击时退出系统
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);
                    
                }
            });
            pop.add(menu);
            TrayIcon tray = new TrayIcon(icon.getImage(), "Hern",pop);
            
            // 获得系统托盘对象
            SystemTray systemTray = SystemTray.getSystemTray();
            systemTray.add(tray);// 将托盘图片添加到系统托盘中
        }
        
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        t3 test = new t3();
        
        try {
            
            test.Tray();
            
        }catch(AWTException e) {
            e.printStackTrace();
        }
 
    }
 
}

技术分享图片

技术分享图片





以上是关于求教javafx 做的系统托盘的主要内容,如果未能解决你的问题,请参考以下文章

从Webdings字体创建系统托盘图标

如何使用python创建系统托盘弹出消息? (视窗)

Qt开发实现系统托盘,托盘菜单,托盘消息

Qt 实现系统托盘,托盘菜单,托盘消息

centos7.9下Qt 实现系统托盘,托盘菜单,托盘消息

ava SystemTray类(系统托盘)和TrayIcon类(托盘图标)