如何隐藏任务栏系统托盘中的JFrame

2023-12-02

我创建了一个JFrame并想将其隐藏在taskbar in windows,但是,它不应该在右下角可见,而是隐藏在tray menu items.

有人能告诉我该怎么做吗?
我需要对系统设置进行一些更改吗windows?

例如,您可能见过一些download managers, Team Viewer, 4shared desktop等隐藏在任务栏的托盘菜单项中。


import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.UIManager;

/**
 *
 * @author Mohammad Faisal
 * ermohammadfaisal.blogspot.com
 * facebook.com/m.faisal6621
 *
 */

public class HideToSystemTray extends JFrame{
    TrayIcon trayIcon;
    SystemTray tray;
    HideToSystemTray(){
        super("SystemTray test");
        System.out.println("creating instance");
        try{
            System.out.println("setting look and feel");
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }catch(Exception e){
            System.out.println("Unable to set LookAndFeel");
        }
        if(SystemTray.isSupported()){
            System.out.println("system tray supported");
            tray=SystemTray.getSystemTray();

            Image image=Toolkit.getDefaultToolkit().getImage("/media/faisal/DukeImg/Duke256.png");
            ActionListener exitListener=new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("Exiting....");
                    System.exit(0);
                }
            };
            PopupMenu popup=new PopupMenu();
            MenuItem defaultItem=new MenuItem("Exit");
            defaultItem.addActionListener(exitListener);
            popup.add(defaultItem);
            defaultItem=new MenuItem("Open");
            defaultItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    setVisible(true);
                    setExtendedState(JFrame.NORMAL);
                }
            });
            popup.add(defaultItem);
            trayIcon=new TrayIcon(image, "SystemTray Demo", popup);
            trayIcon.setImageAutoSize(true);
        }else{
            System.out.println("system tray not supported");
        }
        addWindowStateListener(new WindowStateListener() {
            public void windowStateChanged(WindowEvent e) {
                if(e.getNewState()==ICONIFIED){
                    try {
                        tray.add(trayIcon);
                        setVisible(false);
                        System.out.println("added to SystemTray");
                    } catch (AWTException ex) {
                        System.out.println("unable to add to tray");
                    }
                }
        if(e.getNewState()==7){
                    try{
            tray.add(trayIcon);
            setVisible(false);
            System.out.println("added to SystemTray");
            }catch(AWTException ex){
            System.out.println("unable to add to system tray");
        }
            }
        if(e.getNewState()==MAXIMIZED_BOTH){
                    tray.remove(trayIcon);
                    setVisible(true);
                    System.out.println("Tray icon removed");
                }
                if(e.getNewState()==NORMAL){
                    tray.remove(trayIcon);
                    setVisible(true);
                    System.out.println("Tray icon removed");
                }
            }
        });
        setIconImage(Toolkit.getDefaultToolkit().getImage("Duke256.png"));

        setVisible(true);
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args){
        new HideToSystemTray();
    }
}

这就是工作程序!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何隐藏任务栏系统托盘中的JFrame 的相关文章

  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何解决 onEditCommit 事件上的类型不匹配错误?

    我在 Fxml 中使用 onEditCommit 事件在用户编辑数据后检索数据 FXML 代码
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu
  • 让 Jenkins 对远程用户不可见

    我的本地 Windows 设备上有一个 Jenkins 服务器 但我想让它对外界不可见 有关服务器的办公室规则 明显且不隐晦的 效果令人满意的方法是设置防火墙规则来阻止对其端口的传入访问 但我认为必须有一个 Jenkins 设置来阻止它向除
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐

  • startManagingCursor() 在服务中?

    有没有办法在服务中而不是活动中使用 startManagingCursor 并获得相同的结果 如图所示here 更具体地说 我想根据服务的生命周期管理给定游标的生命周期 例如 当服务被销毁时 它将自动对给定的 Cursor 调用 deact
  • 如何传递非静态函数作为回调? [复制]

    这个问题在这里已经有答案了 我目前正在使用 Qt 和图形引擎 在 QGLWidget 实例的初始化期间 我需要将一些函数指针传递给我的引擎 寻找回调的函数是 virtual void Buffer CreateCustom byte get
  • 如何创建带有图像的单选按钮

    我想要一个带有图像而不是文本的单选按钮 所以我想要一个男性和女性的图像 而不是男性和女性的文本 这实际上可以使用标准 HTML 来完成还是必须使用 jQuery 我该怎么做呢 Use
  • 编译器是否允许回收释放的指针变量?

    有人声称 a compiler is free to reuse the pointer variable for some other purpose after the realloc being freed so you have n
  • 升级 ColdFusion 使用的 JRE

    我有一个 ColdFusion 8 1 应用程序 它被大量使用 我看到 jrun exe 在任务管理器中的内存使用率非常高 这是一个 32 位 Windows 2003 服务器 当 Jrun 达到大量内存使用量时 ColdFusion 将在
  • 如何在node.js中将类似字符串的数组转换为数组?

    实际上我得到了arraylist从 Android 设备中node js 但由于它是字符串形式 所以我想将其转换为array 为此 我在中提到了很多类似的问题SO但他们都没有帮助 我也尝试使用JSON parse 但这没有帮助 我正在以表格
  • 如何以通用方式检测位置缺失:固定?

    在iPad等移动设备上 我想禁用仅在支持position fixed时才有效的功能 有没有一种方法可以在不使用用户代理字符串的情况下检测这些设备 原因是我想尽可能避免搜索 iPad iPhone iPod Android 等 运行以下函数来
  • Webstorm IDE 缺少 Node.js Boilerplate 项目类型

    所以我专门检索了webstorm来学习和使用node js进行开发 似乎 Webstorm 的所有文档都指向现有项目类型 其中包含样板 Node js 设置 而没有所有 Web 配置等 我想使用这个样板模板 而不是带有一堆网络垃圾和不必要的
  • 为什么一个特征没有为一个明确实现了它的类型实现?

    我正在尝试使用Diesel查询 MySQL 数据库并使用 Handlebars 模板显示结果Rocket 我有这个模型 rs derive Queryable Serialize pub struct Post pub id i32 pub
  • 如何从 Java 的标准输入读取整数数组?

    在标准输入的一行中 我有 3 种类型的整数 第一个整数是 id 第二个整数是 N 某个数字 之后是 N 个整数 用一个空格分隔 我想将其存储在数组或 ArrayList 中 我如何使用 BufferedReader 来做到这一点 我有以下代
  • OpenCart 订阅模式(x 个月)

    我正在使用 OpenCart 设置一个电子商务网站 并且我想提供订阅 特别是 3 6 12 个月的订阅 我对定期计费不感兴趣 我知道有 PayPal 和 Authorize net 的模块 我希望用户提前付款一次 从配置的角度来看 这是否会
  • 为轮播横幅添加视差效果,使图像和文本以不同的速度移动

    我可以使用轮播效果 但我不知道如何使文本和图像以不同的速度移动 如 IBM 横幅所示 http www ibm com us en 这是我的 jQuery fn zinCarousel function settings var setti
  • C++循环包含问题[重复]

    这个问题在这里已经有答案了 我有这个文件 logger hpp ifndef LOGGER HPP define LOGGER HPP include event hpp Class definitions class Logger pub
  • 场景图形/显示列表之外的 AS3 事件冒泡

    您好 只是想知道是否可以在 AS3 中的非显示列表类中利用事件冒泡 例如 在应用程序的模型中 有一个包含许多汽车的 City 类 有哪些方法可以将事件侦听器附加到 City 对象并接收从子 Cars 冒出的事件 澄清一下 City 和 Ca
  • 当我们在 C 中取消引用 NULL 指针时,操作系统中会发生什么?

    假设有一个指针 我们用 NULL 初始化它 int ptr NULL ptr 10 现在 程序将会崩溃 因为ptr没有指向任何地址 我们正在为其分配一个值 这是无效的访问 那么 问题是 操作系统内部发生了什么 是否发生页面错误 分段错误 内
  • 多线程哪个最好用? (线程池或线程)

    希望这是一个比我之前提出的问题更好的问题 我有一个 exe 文件 我将向其传递不同的参数 文件路径 然后它将接受并解析该参数 因此 我将进行一个循环 循环遍历列表中的文件路径并将它们传递给此 exe 文件 为了提高效率 我想将执行分散到多个
  • 我可以像这样重写我的网址吗?这是一个好主意吗?

    是否可以重写 Apache Mod Rewrite 一个 URL http www example com view php t h5k6对此http www example com h5k6 进行此重写的原因是 URL 需要非常短 有点像
  • 在 Android 中获取 BLE Beacon 的 Tx 功率

    我想通过 Android 设备获取 BLE 信标的 Tx 功率 我在这里定义了 Tx 功率的分配数量 public class AssignedNumbers public static final byte TXPOWER 0x0A 然后
  • Spring @Required 注解已弃用?

    我正在尝试添加 Required对我的 bean 的注释 但编译器说它已被弃用 public class Product private String id public String getId return id Required pu
  • 如何隐藏任务栏系统托盘中的JFrame

    我创建了一个JFrame并想将其隐藏在taskbar in windows 但是 它不应该在右下角可见 而是隐藏在tray menu items 有人能告诉我该怎么做吗 我需要对系统设置进行一些更改吗windows 例如 您可能见过一些do