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

Dar*_*Ray 2 java icons swing image jframe

我想在javax.swing.JFrame标题栏中添加一个图像(小图标).

我该怎么做?

mre*_*mre 11

由于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);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

框架使用16x16图标

在此输入图像描述

应用程序选项卡使用32x32图标

在此输入图像描述

  • ..请参见相关方法`setIconImages()`(注意复数形式).如果您设置尺寸为16x16和32x32的图像,则第1个将用作框架图标(在支持它的系统上 - 我最近注意到Mac.没有),以及第二个显示在不同应用程序之间的"alt tabbing"时.我不知道除了Windows之外的哪些其他平台都会显示一个代表应用程序的图标.在他们之间改变时. (4认同)
  • @mre:我无法抗拒使用从另一个线程借来的关于这些部分的几个图像添加一个例子.我认为最好将其添加为您的问题的编辑,因为它实际上是相同的答案.如果您愿意,可以将其编辑出来并将其作为单独的答案添加. (2认同)
  • @Andrew,这很完美.我很欣赏你提供的详细阐述......它绝对丰富了这个答案的价值.感谢你!:) (2认同)