Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Как перерисовать(обновить) ImageIcon?


Автор: Killer_13 9.6.2011, 22:00
Суть вопроса такова. 
У меня в кнопку подгружается иконка, мне нужно чтоб по нажатию на другую кнопку иконка менялась. ActionEvent и так д я прикручу, я только не знаю как обновить рабочее пространство.
И может кто-то своими словами объяснит - что делает pack() - кода он нужен. кода нет. Спасибо!
Вот кусочек кода.

Код

private JButton b1 = new JButton("Oben");
private ImageIcon ico1 = new ImageIcon("img/oben1.gif");
private JPanel p = new JPanel();
setContentPane(p);
        p.add(b1);
        p.add(new JButton(ico1));
 

Автор: jk1 9.6.2011, 22:25
Сохраните ссылку на JButton и в нужный момент вызовите
Код

button.setIcon(imageIcon);

Цитата

И может кто-то своими словами объяснит - что делает pack()


Метод pack() заставляет контейнер верхнего уровня (окно) пересчитать собственные размеры и размеры дочерних контейнеров в соответствии с правилами Layout Managers и жестко заданными размерами, если таковые есть.

Правила использования pack:

1. Если Вы используете setSize() или setBounds() - жестко задаете размеры окна при помощи констант, то pack() Вам не нужен
2. Если полагаетесь на Layout Manager'ы в определении необходимого размера окна - вызывайте его один раз для каждого окна перед тем, как отобразить его в  первый раз.

Пример:
Вам нужно разместить окно по центру экрана. Задача тривиальна, но требуется знать размеры окна. Так вот, до вызова pack() (если конечно Вы жестко не задали константами размеры окна) Вы не сможете узнать эти размеры - они просто не будут посчитаны.

Автор: Killer_13 9.6.2011, 22:38
Пасиб, сейчас попробую smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)