在 Windows 系统托盘中隐藏我的程序

发布于 2024-11-18 06:52:00 字数 241 浏览 5 评论 0原文

我希望我的程序在 Windows 时钟附近的任务栏状态区域中显示一个图标,并找到了一种方法来实现这一点。

问题是,如果在窗口上按下“X”,我希望我的程序在状态区域中保持打开状态,而不是在系统托盘中,但我不知道如何做到这一点,并且在 Google 上搜索也没有没有帮助(我可能没有搜索正确的术语)。

编辑:我认为我使用了错误的术语。我知道如何将程序的图标显示在通知区域中,我想要的是将其隐藏在最小化窗口时通常显示的区域中。

I'd like my program to display an icon in the TaskBar Status Area near the clock in Windows and found a way to do so.

The thing is, I'd like my program to stay open in the Status Area if the "X" is pressed on the window, but not in the System Tray, but I have no idea how to do so and searching on Google didn't help (I'm probably not searching the right terms).

Edit: I think I used the wrong terms. I know how to have my program's icon in the notification area, what I'd like is to hide it in the area where it is normally displayed when you minimize a window.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一张白纸 2024-11-25 06:52:00

我知道如何将程序的图标显示在通知区域中,我想要的是将其隐藏在最小化窗口时通常显示的区域中。

然后不要使用系统托盘。

问题是,如果在窗口上按下“X”,我希望我的程序在状态区域中保持打开状态,

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

I know how to have my program's icon in the notification area, what I'd like is to hide it in the area where it is normally displayed when you minimize a window.

Then don't use the system tray.

The thing is, I'd like my program to stay open in the Status Area if the "X" is pressed on the window,

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
趴在窗边数星星i 2024-11-25 06:52:00

JavaSE v 6 中添加了系统托盘支持。

您可以在此处查看示例
http://download.oracle.com/javase/7 /docs/api/java/awt/SystemTray.html

System Tray support was added in JavaSE v 6.

you can see example here
http://download.oracle.com/javase/7/docs/api/java/awt/SystemTray.html

抱猫软卧 2024-11-25 06:52:00
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;

public class HideToSystemTray extends JFrame {
    TrayIcon trayIcon;
    SystemTray tray;
    JButton button;

    HideToSystemTray() {
        super("SystemTray test");
        button = new JButton("Press");
        button.setBounds(10, 10, 40, 40);
        setUndecorated(true);
        getContentPane().add(button);
        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("C:\\Users\\Sandipan\\Desktop\\cutter.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) {
                    tray.remove(trayIcon);
                    setVisible(true);
                    System.out.println("Tray icon removed");
                }
            });
            popup.add(defaultItem);
            trayIcon = new TrayIcon(image, "SystemTray Demo", popup);
            trayIcon.setImageAutoSize(true);
        } else {
            System.out.println("system tray not supported");
        }

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //Execute when button is pressed
                System.out.println("You clicked the button");
                try {
                    tray.add(trayIcon);
                    setVisible(false);
                    System.out.println("added to SystemTray");
                } catch (AWTException ex) {
                    System.out.println("unable to add to tray");
                }
            }
        });


    /*  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("C:\\Users\\Sandipan\\Desktop\\cutter.png"));

    setVisible(true);
    setSize(300, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
    new HideToSystemTray();
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;

public class HideToSystemTray extends JFrame {
    TrayIcon trayIcon;
    SystemTray tray;
    JButton button;

    HideToSystemTray() {
        super("SystemTray test");
        button = new JButton("Press");
        button.setBounds(10, 10, 40, 40);
        setUndecorated(true);
        getContentPane().add(button);
        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("C:\\Users\\Sandipan\\Desktop\\cutter.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) {
                    tray.remove(trayIcon);
                    setVisible(true);
                    System.out.println("Tray icon removed");
                }
            });
            popup.add(defaultItem);
            trayIcon = new TrayIcon(image, "SystemTray Demo", popup);
            trayIcon.setImageAutoSize(true);
        } else {
            System.out.println("system tray not supported");
        }

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //Execute when button is pressed
                System.out.println("You clicked the button");
                try {
                    tray.add(trayIcon);
                    setVisible(false);
                    System.out.println("added to SystemTray");
                } catch (AWTException ex) {
                    System.out.println("unable to add to tray");
                }
            }
        });


    /*  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("C:\\Users\\Sandipan\\Desktop\\cutter.png"));

    setVisible(true);
    setSize(300, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
    new HideToSystemTray();
}
}
盛夏已如深秋| 2024-11-25 06:52:00

我猜您希望在最小化主窗体时删除任务栏按钮。您可以通过将其可见属性设置为 false 来实现此目的,但是您可以使用 Java 框架来实现此目的。

I guess you want the taskbar button to be removed when you minimise the main form. You achieve this by petting its visible property to false, however you do that with your Java framework.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文