Есть ли способ сделать не глубокую копию JPanel - PullRequest
0 голосов
/ 13 марта 2011

Хорошо, у меня есть JPanel (я использую NetBeans и Swing), который я хотел бы сделать копию и использовать в другой вкладке, то есть он использует тот же макет, что и другая панель, но я не хочу делать глубокая копия этого. Потому что, если я делаю глубокую копию, когда меняю одну, я меняю другую. Есть ли способ просто сделать копию того, на что это похоже, без связи с оригиналом

Ответы [ 4 ]

3 голосов
/ 13 марта 2011

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

В любом случае, создание копий целых деревьев компонентов Swing не является чем-то, что действительно поддерживается - хотя это может быть сделано путем сериализации.

Но почему вы не можете просто использоватьтот же код, который создал ваш оригинальный JPanel (с компонентами в нем) и создал новый?

0 голосов
/ 01 апреля 2015

Вот метод для решения следующей проблемы без кодирования, просто используя конструктивные представления JPanels / JFrames.

Вы можете перейти в Navigator в конструктивном представлении, выбрать все компоненты JPanel и скопировать их, набрав ctrl + a и ctrl+ с.Затем создайте еще один JPanel и в режиме конструктора просто вставьте их с помощью ctrl + v.

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

0 голосов
/ 14 марта 2011

Вы используете Matisse UI-дизайнер в Netbeans IDE? Затем вы можете просто выбрать созданный вами JPanel, скопировать его в буфер обмена и вставить в другую форму.

0 голосов
/ 13 марта 2011

Вы на самом деле не можете сделать копию компонента Swing, привязанного к оригиналу.Компоненты могут совместно использовать только модели.

Вы можете создать клон своей панели, который будет полностью отдельной панелью, никак не связанной с оригиналом.

...