我正在使用和JFrame编写基于Java Swing的程序,该程序能够显示系统任务栏图标,以便快速访问最常用的功能。现在,我想为用户添加一个选项,以选择在最小化程序窗口时是否应显示常规(Windows)任务栏图标。

在Google中进行的搜索告诉我,我可以使用JDialog代替JFrame。不幸的是,对于我而言,这不是一个好的解决方案,因为我想根据用户的决定动态地启用或禁用任务栏图标。

有可能吗?

谢谢您,Matthias

最佳答案

可以尝试一下,尽管我不能完全确定这是否可行,但要是在这里晚了,我可能会以错误的方式思考。

当您最小化窗口时,将触发一个事件,您想要做的是通过向JFrame中添加WindowStateListener来捕获该事件,以监视WINDOW_ICONIFIED和WINDOW_DEICONIFIED。当发生WINDOW_ICONIFIED时,将JFrame的visible属性设置为false;否则,将JFrame的visible属性设置为false。当WINDOW_DEICONIFIED将其设置为true时。将帧可见性设置为false的快速测试似乎已将其从任务栏中删除,您要做的就是弄清楚它是否确实有效,然后实现状态列表器。

这是我用来测试的代码

import java.awt.*;

public class FrameTest
{
    public static void main (String args[]) throws Exception
    {
        // Create a test frame
        Frame frame = new Frame("Hello");
        frame.add ( new Label("Minimize demo") );
        frame.pack();

        // Show the frame
        frame.setVisible (true);

        // Sleep for 5 seconds, then minimize
        Thread.sleep (5000);
        frame.setState ( Frame.ICONIFIED );
        frame.setVisible(false);
        // Sleep for 5 seconds, then restore
        Thread.sleep (5000);
        frame.setState ( Frame.NORMAL );
        frame.setVisible(true);

        // Sleep for 5 seconds, then kill window
        Thread.sleep (5000);
        frame.setVisible (false);
        frame.dispose();

        // Terminate test
        System.exit(0);
    }
}

10-08 02:53