2012-05-10 1 views
6

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

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

Мой вопрос: есть ли какие-либо манипуляции с Java GUis в DOM, как?

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

Спасибо!

+0

Вы имеете в виду прохождение иерархии компонентов? –

+2

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

+0

* "(HTML) .. не знаю названия модели" * См. ['HTMLDocument'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/ html/HTMLDocument.html) –

ответ

7

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

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

Container contentPane = frame.getContentPane(); 

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

Component[] children = contentPane.getComponents(); 

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

Container parent = child.getParent(); 

для добавления компонента к контейнеру:

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

Для удаления компонента из контейнера:

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

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

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

+0

Я бы посоветовал использовать revalidate() + repaint() во всех случаях, конечно, может быть дискусция за то, что требуется JComponent и почему нет, просто чтобы избежать этого revalidate() + repaint() +1 – mKorbel

+0

Вы можете получить список с помощью Ctrl + Shift + F1, как показано [здесь] (http://stackoverflow.com/questions/6671021). –