Как я могу изменить значок по умолчанию приложения (или окна) swing на основе JPanel

#java #swing #icons

#java #swing #Значки

Вопрос:

Я видел много ответов на этот вопрос, когда это JFrame , но ни одного для JPanel , и все, что я пробовал, не сработало.

Итак, в основном я написал этот простой класс / приложение, которое расширяется JPanel , и все работает нормально. Теперь я хотел бы изменить значок по умолчанию.

Есть идеи?

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

1. Панель нельзя сделать видимой, не будучи встроенной в окно (JFrame, JDialog, JWindow). Что именно вы хотите сделать?

2. JPanel — это всего лишь контейнер, но без окна, поэтому вокруг него должен быть JFrame, JDialog или JApplet.

3. хорошо, спасибо за ваше исправление. Я не заметил JFrame, теперь я это делаю. Я попытался проголосовать за его закрытие, но диалоговое окно предоставило мне несколько вариантов на выбор, ни один из них не имеет отношения к моему случаю, хотя кто-то выбрал «не настоящий вопрос»..

Ответ №1:

Так же, как ребята говорят здесь в комментариях, пожалуйста, пересмотрите то, что вы пытаетесь сделать. Единственный вариант изменить значок — установить его для фрейма, в котором панель является дочерней, поскольку значок является частью / принадлежит фрейму.

Если вы хотите, чтобы настройка значка была функциональностью панели, то в методе addNotify (), который вызывается, когда компонент получает родительский элемент, просмотрите родительский элемент панели и его родительский элемент и так далее, пока не дойдете до фрейма и установите для него значок.

Пример, показывающий количество родительских элементов, которые вы должны пройти, чтобы перейти к фрейму, если панель является его панелью содержимого.

         JPanel p = new JPanel();
        JFrame f = new JFrame();
        f.setContentPane(p);
        System.out.println(SwingUtilities.windowForComponent(p));
  

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

1. хорошо, теперь разобрался с этим, был другой класс, у которого был JFrame, спасибо!

2. используйте SwingUtilities.windowForComponent(…) для получения фрейма, а не метод getParent().

3. @camickr Я не знал о его существовании. Урок усвоен. Приветствия.:)