Как добавить изображение в строку заголовка JFrame?

#java #swing #jframe #titlebar

#java #изображение #swing #Значки #jframe

Вопрос:

Я хочу добавить изображение (маленький значок) в javax.swing.JFrame строку заголовка.

Как я могу это сделать?

Комментарии:

1. JPanel не имеет строки заголовка…

Ответ №1:

Поскольку 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);
            }
        });
    }
}
  

Рамка с использованием значка 16×16

введите описание изображения здесь

Вкладка приложения с помощью значка 32×32

введите описание изображения здесь

Комментарии:

1. .. смотрите также связанный метод setIconImages() (обратите внимание на форму множественного числа). Если вы установите изображения размером 16×16 и 32×32, первое будет использоваться в качестве значка рамки (в системах, которые его поддерживают — я недавно отметил, что Mac. этого не делает), а второе отображается при «alt tabbing» между различными приложениями. Я понятия не имею, на каких других платформах, кроме Windows, отображается значок для представления приложений. при переключении между ними.

2. @mre: Я не смог удержаться и добавил пример, используя пару изображений, позаимствованных из другой темы об этих частях. Я подумал, что лучше всего добавить его в качестве редактирования к вашему вопросу, поскольку это фактически тот же ответ. Если вы предпочитаете, отредактируйте это, и я добавлю это в качестве отдельного ответа.

3. @Andrew, это идеально. Я ценю детальную проработку, которую вы provided…it определенно повышает ценность этого ответа. слава вам! 🙂

4. @mre: Приятное дополнение к (тому, что я считаю) «ответу на правильный вопрос». 😉

5. @mre: спасибо за детали, хорошо структурированные ответы.. С вашей помощью я обнаружил, что мне подходят внутренние фреймы. Еще раз спасибо за ваш отличный ответ…