我正在使用和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);
}
}