Java GUI: объектная модель документа

HTML имеет объектную модель документа, которую Javascript может затем манипулировать / перемещать.

Когда я создаю GUI в Swing - модель кажется очень разной (я не знаю названия модели), так как я создаю менеджеры компоновки и вставляю в них объекты.

Мой вопрос: есть ли способ манипулировать Java-интерфейсом в стиле DOM?

[Например, я хочу иметь возможность удалять / добавлять узлы, перемещать дочерние элементы и т. Д ...]

Благодарность

 Andrew Thompson10 мая 2012 г., 23:54
"(HTML) ..не знаю название модели" ВидетьHTMLDocument
 user138335910 мая 2012 г., 23:56
@ Marko: лол, это то, что я думал. Около двух дней назад я создал базовый JFrame, получил его среду Graphics2D и просто начал рисовать в ней что-то, но я надеялся, что кто-то другой уже решил эту проблему. : -)
 Guillaume Polet10 мая 2012 г., 23:52
Ты имеешь в виду проходить иерархию Компонентов?
 Hawken10 мая 2012 г., 23:54
Разве this.add (<бла-бла>) - это не то же самое, что добавление узла в javascript?
 Marko Topolnik10 мая 2012 г., 23:52
Тебя ждет какое-то ужасное разочарование и разочарование. В Swing все намного сложнее, чем то, к чему вы привыкли в Javascript. Вы также обнаружите, что отсутствует захват / всплытие событий - он отправляется только слушателю, подключенному непосредственно к источнику события.

Ответы на вопрос(2)

Решение Вопроса

т быть JWindow и JDialog, но обычно у вас есть как минимум один корневой фрейм). Скорее всего, все, что вас волнует, это contentPane этого JFrame (но вы также можете позаботиться о его собственных Windows и т. Д.).

Так что из JFrame вы можете получить панель контента следующим образом:

Container contentPane = frame.getContentPane();

Отсюда вы можете начать спускаться по дереву компонентов, используя:

Component[] children = contentPane.getComponents();

От ребенка вы можете получить его родителя с помощью:

Container parent = child.getParent();

Чтобы добавить компонент в контейнер:

container.add(someComponent);
container.validate();

Чтобы удалить компонент из контейнера:

container.remove(someComponent);
container.validate();

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

Я не уверен, что это отвечает на твой вопрос. Было бы проще, если бы вы могли опубликовать реальные примеры того, что вы пытаетесь сделать.

 Catalina Island11 мая 2012 г., 14:23
Вы можете получить список сCtrl+Shift+F1, как они показываютВо.
 mKorbel11 мая 2012 г., 06:00
Я бы предложил не использовать revalidate () + repaint (), во всех случаях, конечно, можно было бы обсудить, что требуется JComponent, а почему нет, просто чтобы избежать этого revalidate () + repaint () + 1

Ваш ответ на вопрос