Swing Java中带有多框架应用程序的任务栏图标

Swing Java中带有多框架应用程序的任务栏图标,java,swing,imageicon,taskbar,Java,Swing,Imageicon,Taskbar,我有一个JavaSwing应用程序,可以同时打开多个框架。每个帧都有自己的图标图像。操作系统如何确定任务栏中应该使用哪些图标。 有没有办法将图标切换到另一帧的图标?给定JFrame 1、JFrame 2和JFrame 3,每个都有各自的图标: 设置图标方法: public void setIcons(List<JFrame> frames, Image icon) { List<Image> iconAsList = new ArrayList<Image&

我有一个JavaSwing应用程序,可以同时打开多个框架。每个帧都有自己的图标图像。操作系统如何确定任务栏中应该使用哪些图标。
有没有办法将图标切换到另一帧的图标?

给定JFrame 1、JFrame 2和JFrame 3,每个都有各自的图标:

设置图标方法:

public void setIcons(List<JFrame> frames, Image icon) {
    List<Image> iconAsList = new ArrayList<Image>();
    iconAsList.add(icon);
    for(JFrame frame: frames) {
        frame.setIconImages(iconAsList);
    }
}
...
List<JFrame> frames = new ArrayList<JFrame>();
JFrame frame1 = new JFrame();
JFrame frame2 = new JFrame();
JFrame frame3 = new JFrame();
Image icon1 = new ImageIcon("icon1.png").getImage();
Image icon2 = new ImageIcon("icon2.png").getImage();
Image icon3 = new ImageIcon("icon3.png").getImage();

frames.add(frame1);
frames.add(frame2);
frames.add(frame3);

setIcons(frames, icon1); //Set all frames to use icon 1

//DO OTHER STUFF

setIcons(frames, icon3); //Set all frames to use icon 3
...
public void设置图标(列表框、图像图标){
List iconAsList=新建ArrayList();
iconAsList.add(图标);
用于(JFrame帧:帧){
frame.setIconImages(iconAsList);
}
}
其他代码:

public void setIcons(List<JFrame> frames, Image icon) {
    List<Image> iconAsList = new ArrayList<Image>();
    iconAsList.add(icon);
    for(JFrame frame: frames) {
        frame.setIconImages(iconAsList);
    }
}
...
List<JFrame> frames = new ArrayList<JFrame>();
JFrame frame1 = new JFrame();
JFrame frame2 = new JFrame();
JFrame frame3 = new JFrame();
Image icon1 = new ImageIcon("icon1.png").getImage();
Image icon2 = new ImageIcon("icon2.png").getImage();
Image icon3 = new ImageIcon("icon3.png").getImage();

frames.add(frame1);
frames.add(frame2);
frames.add(frame3);

setIcons(frames, icon1); //Set all frames to use icon 1

//DO OTHER STUFF

setIcons(frames, icon3); //Set all frames to use icon 3
...
。。。
列表帧=新的ArrayList();
JFrame frame1=新JFrame();
JFrame frame2=新JFrame();
JFrame frame3=新JFrame();
Image icon1=新图像图标(“icon1.png”).getImage();
Image icon2=新的图像图标(“icon2.png”).getImage();
Image icon3=新图像图标(“icon3.png”).getImage();
框架。添加(框架1);
框架。添加(框架2);
框架。添加(框架3);
设置图标(帧,图标1)//将所有帧设置为使用图标1
//做其他事情
设置图标(框架,图标3)//将所有帧设置为使用图标3
...

让我知道这是否有帮助。

JFrames
始终显示在任务栏中。您可以使用
JDialogs
,而不是使用
JFrames
,它显示为
JFrames
,但不显示在任务栏上。只需将
JFrame
对象用于您希望显示的图标。很遗憾,我无法更改现有系统。有JFrames,我需要为它们找到解决方案。我尝试过,但所有的框架都有相同的图标。每一帧都必须有自己的图标。但感谢你的回答帮助我找到了解决办法!众所周知,frame.getIconImages()返回具有不同维度的图标列表。我只为每一帧改变最大的图标。我注意到在Windows操作系统中,最大的一个用作任务栏图标,较小的一个用作窗口标题上的图标。因此,更改最大的图标会影响任务栏图标,而标题图标不会更改。