Панель с вкладками с несколько раз той же панели - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть три вкладки, первая из которых содержит компонент, вторая - другой компонент, а третья содержит оба компонента из первой и второй вкладок.На моей третьей вкладке оба компонента не отображаются.Нужно ли делать клон моего первого и второго компонента, чтобы он был на третьей вкладке?Что если некоторые свойства моих компонентов изменятся?

Ответы [ 6 ]

1 голос
/ 21 апреля 2011

Если вы хотите добиться этого. Вы можете сделать следующие шаги - Добавить вкладку списка - Всякий раз, когда вкладка выбрана, вы можете добавить компоненты, которые должны отображаться на панели выбранных вкладок, и показать ее. (то есть, когда отображается табульная панель, мы сбрасываем родительские детали компонентов)

1 голос
/ 21 апреля 2011

Как уже упоминалось, Swing JComponent нельзя добавить более чем к одному JComponent (его родительскому элементу).

Если вы хотите поделиться содержимым компонентов, у вас обычно есть простой вариант: поскольку компоненты Swing основаны на MVC , у них всех есть модель , которой вы можете поделиться между несколькими JComponent с.

Например, JTextComponent (JTextField и JTextArea являются JTextComponent s) имеет Document в качестве своей модели, этот Document может использоваться совместно, как в следующем фрагменте:

JTextField field1 = new JTextField();
JTextField field2 = new JTextField();

field2.setDocument(field1.getDocument());

Теперь, если вы хотите синхронизировать другие свойства (например, количество столбцов JTextField), вам придется использовать PropertyChangeListener, как предложил кто-то другой.

1 голос
/ 21 апреля 2011

Несколько вкладок не могут иметь один и тот же компонент. В базе данных Sun есть ошибка для этого:

Ошибка: 4176095 - Уточнение, что никакие 2 вкладки в JTabbedPane не могут иметь одинаковый компонент

Существует предлагаемое исправление, которое еще не было включено.

1 голос
/ 21 апреля 2011

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

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

0 голосов
/ 21 апреля 2011

На каждой вкладке вы должны иметь отдельные компоненты, используя слушателей, вы можете манипулировать свойствами этих компонентов.

Чтобы решить эту проблему, вы должны ознакомиться с шаблоном проектирования MVC,

0 голосов
/ 21 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...