如何将图片添加到JFrame的标题栏?

3
我想在 javax.swing.JFrame 的标题栏中添加一个图片(小图标)。
我该怎么做?

3
JPanel 没有标题栏... - mre
1个回答

12

由于 JPanel 没有标题栏,我假设您是在指 JFrame。话虽如此,请使用 setIconImage(...)


这里是使用 setIconImages() 的示例。

import java.awt.Image;
import javax.swing.*;
import javax.imageio.ImageIO;

import java.net.URL;
import java.util.*;

class FrameIcons {

    public static void main(String[] args) throws Exception {
        URL url16 = new URL("http://i.stack.imgur.com/m0KKu.png");
        URL url32 = new URL("http://i.stack.imgur.com/LVVMb.png");

        final List<Image> icons = new ArrayList<Image>();
        icons.add(ImageIO.read(url16));
        icons.add(ImageIO.read(url32));

        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                JFrame f = new JFrame("Frame Icons");
                f.setIconImages(icons);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setLocationByPlatform(true);
                f.setSize(200,100);
                f.setVisible(true);
            }
        });
    }
}

使用16x16图标进行框架设计

图片描述

使用32x32图标进行应用程序分组标签

图片描述


4
另请参考相关方法setIconImages()(注意复数形式)。如果设置了16x16和32x32大小的图像,第一个图像将用作框架图标(在支持它的系统上 - 我最近注意到Mac不支持),而第二个图像在不同应用程序之间切换时显示为“alt tabbing”。我不知道除Windows之外的哪些平台会显示代表应用程序的图标进行切换。 - Andrew Thompson
2
@mre:我忍不住要添加一个例子,使用了从另一个关于这些部件的线程中借来的几张图片。我认为最好将其作为对您问题的编辑添加,因为它实际上是相同的答案。如果您愿意,可以将其删除,我会将其作为单独的答案添加。 - Andrew Thompson
2
@Andrew,非常完美。感谢你提供了详细的阐述……它确实丰富了这个答案的价值。向你致敬! :) - mre
1
@mre:这是我认为的“回答正确问题”的好补充。;) - Andrew Thompson
@mre:感谢您详细而有条理的回答。在您的帮助下,我发现适合我的东西是内部框架。再次感谢您的出色回答。 - DarRay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接