【问题标题】:Run Application in tray icon(not in taskbar)在托盘图标中运行应用程序(不在任务栏中)
【发布时间】:2020-09-18 12:20:05
【问题描述】:

我想在托盘中运行我的应用,但我没有在任务栏中显示图标。

我在 Hide_On_Close 操作中使用我的 JFrame

我使用托盘图标来通知通知,但是如何在我的 GUI 应用程序运行时摆脱任务栏上的图标。

【问题讨论】:

  • 不清楚你在做什么?您运行应用程序并显示一个 JFrame,然后关闭应用程序并希望它出现在系统托盘中?
  • 抱歉不准确
  • 我正在做的是一个小部件,它需要在托盘中而不是在任务栏中
  • 所以我只需要隐藏任务栏上的图标。
  • 托盘仅用于通知。任务栏有一个打开的应用程序列表,而您的是打开的应用程序。

标签: java swing user-interface jframe system-tray


【解决方案1】:

这对你有用吗?您可能需要添加您正在处理的操作系统。

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class SysTrayFrame{

    public static void main(String[] args) throws Exception{
        JFrame frame = new JFrame("systray test");
        frame.setUndecorated(true);
        BufferedImage img =  new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB);
        Graphics g = img.getGraphics();
        g.setColor(Color.RED);
        g.fillOval(0, 0, 64, 64);
        g.dispose();
        JButton b = new JButton("click to hide");
        frame.add(b);
        b.addActionListener(evt-> frame.setVisible(false) );
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
        TrayIcon icon = new TrayIcon(img);
        icon.addActionListener( evt->{
            System.out.println("doing it");
            frame.setVisible(true);
        });
        SystemTray.getSystemTray().add(icon);
    }

}

【讨论】:

  • 我使用的是 windows 10 专业版
  • @TheFox-CodersAcademy 这也可能与您启动应用程序的方式有关。您的 jdk 是否同时带有 java.exe 和 javaw.exe,使用 javaw 可能意味着该应用在没有关联窗口时不会显示在任务栏上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多