Нельзя ли добавить компонент Swing в несколько контейнеров?
Я пытаюсь (тестирование чего-то еще) добавить одну ссылку JButton
в два JPanels
, чтобы проверить ее, и она исчезает с первой панели, в которую она была добавлена!
Итак, нельзя ли добавить компонент Swing в несколько контейнеров?
Спасибо заранее.
Ответы
Ответ 1
От: http://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html:
Каждый компонент GUI может содержаться только один раз. Если компонент уже в контейнере, и вы пытаетесь его добавить в другой контейнер, компонент будут удалены с первого контейнер, а затем добавляется к второй.
Ответ 2
Как вы обнаружили, вы не можете делиться компонентами. Однако есть и другие подходы, которые вы можете использовать.
В случае JButtons вы можете использовать Action:
Кнопка JButton1 = новый JButton (someAction);
JButton button2 = новый JButton (someAction);
Подробнее читайте в разделе руководства Swing по Как использовать действия.
В других случаях вам может понадобиться поделиться моделью:
DefaultTableModel model = new DefaultTableModel( ... );
JTable table1 = new JTable( model );
JTable table2 = new JTable( model );
Решение зависит от вашего требования.
Ответ 3
решаемые.
Проверка в разделе UI-Swing в учебнике Java.
Каждый компонент GUI может содержаться только один раз. Если компонент уже находится в контейнере, и вы пытаетесь его добавить в другой контейнер, компонент будет удален из первого контейнера, а затем добавлен ко второму.
Ответ 4
Я не думаю, что это возможно. Что вы можете сделать, это несколько компонентов, которые используют один и тот же обработчик событий. В основном, в вашем случае, объявите две кнопки и используйте один и тот же метод обработчика событий.