Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Список не обновляется по клику на другом списке пока не изменишь размер

2 views
Skip to first unread message

Eugene Smelik

unread,
Sep 11, 2006, 8:22:38 AM9/11/06
to
Hi, Андрей.

АY> Имеюся два списка. В зависимости от того что
АY> выбрано в первом списке, содержание второго должно
АY> меняться. Все бы хорошо, но никакого изменения не
АY> проишодит пока не подергаю за край окошка (изменю
АY> чуть-чуть размер). Явно ошибка где-то, но где
АY> понять не могу. Hе могли бы вы взглянуть этот код?
Проблема в том, что неправильно используешь визуальные компоненты. Я бы
сказал, мягко говоря не принято добавлять/заново добавлять компоненты так, как
это делаешь ты. Eсли он тебе уж очень мешает - делай setVisible() на ненужный
компонент (тот, который ты хочешь скрыть).
A тот пример, что у тебя, заработает если ты после add(listActions)
добавишь методы validate() и repaint() (для контейнера). Kогда ты ресайзишь
форму, они выполняются.
АY> Я упростил его до предела. Спасибо
Hе следовало видимо. У JDialog нет метода add() к примеру. Для него
используется getContentPane().add().

АY> Объяснение принципов помогает думать. Примеры учат обезьянничать.
Хватит провоцировать народ. Или перестань писать примеры. :)

Андрей Y

unread,
Sep 12, 2006, 10:59:56 AM9/12/06
to
Спасибо. Работает. Но хотелось бы разобраться чуть
глубже.

ES> Проблема в том, что неправильно


используешь визуальные компоненты. Я бы

ES> сказал, мягко говоря не принято


добавлять/заново добавлять компоненты так, как

ES> это делаешь ты. Eсли он тебе уж очень мешает -
делай setVisible() на ненужный
ES> компонент (тот, который ты хочешь скрыть).

"не принято" это да, но, наверное, у этого "не
принято" есть какая-то причина. Какая?


.
ES> У JDialog нет метода add() к примеру. Для него
ES> используется getContentPane().add().

Опьять же: а почему? метод add() наследуется от
родительского объекта Container и вроде даже
прекрасно работает. Почему его нельзя использовать?

ES> АY> Объяснение принципов помогает думать.
Примеры учат обезьянничать.
ES> Хватит провоцировать народ. Или перестань
писать примеры. :)

Ну я примеры не привожу, а показываю неработаюший
код. Все-таки разница. Но фразу эту надо убрать.
Любая подпись достает через некоторое время. И
больше всего того, кто ее чаше видит (меня то есть).
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Андрей Y

unread,
Oct 17, 2006, 6:53:46 AM10/17/06
to
Eugene Smelik пишет:

ES> не принято добавлять/заново добавлять
ES> компоненты Eсли он тебе уж очень мешает
ES> - делай setVisible() на ненужный
ES> компонент (тот, который ты хочешь скрыть).

что-то у меня так не получается. Последний
добавленный компонент вытесняет предидущий.
Например, мне нужно заменить один компонент другим
в одной и той же позиции на форме, скажем JLabel и
JTextArea. Пытаюсь следовать Вашему объяснению и
добавляю оба:
this.add(textArea, BorderLayout.CENTER);
textArea.setVisible(false);
this.add(lablel, BorderLayout.CENTER);
Потом нажатием кнопки:
lablel.setVisible(! lablel.isVisible());
textArea.setVisible(! textArea.isVisible());
lablel прячется, а textArea не появляется.
Естественно, если последним добавить textArea, то
виден/прячется только он. Что я не понял в Вашем
общъяснении?

--
.......................................................
Если надумаете е-мылить - лучше
andreyz2000#hotmail com

0 new messages