#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 Я не знал о его существовании. Урок усвоен. Приветствия.:)