2012-05-10 13 views
6

HTMLにはDocument Object Modelがあり、Javascriptで操作/移動できます。Java GUI:ドキュメントオブジェクトモデル

スイングでGUIを作成すると、レイアウトマネージャーを作成してその内部にオブジェクトを貼り付けているため、モデルが非常に異なるように見えます(モデルの名前はわかりません)。

私の質問:JavaのGUIをDOMのように操作する方法はありますか?

[例えば、私はなど、周りのチャイルズを移動し、ノードを追加/削除できるようにしたい...]

ありがとう!

+0

あなたはComponentの階層構造を通過するような意味ですか? –

+2

あなたは少し失望し、欲求不満を感じています。 SwingではJavascriptで慣れているものよりもすべてが非常に難しいです。また、イベントキャプチャ/バブリングもないことがわかります。イベントソースに直接添付されたリスナーにのみディスパッチされます。 –

+0

* "(HTML)..モデルの名前を知らない" * ['HTMLDocument']を参照(http://docs.oracle.com/javase/7/docs/api/javax/swing/text/ html/HTMLDocument.html) –

答えて

7

スイングコンポーネントのすべては、JFrameのセットから始まります(JWindowとJDialogのセットがありますが、通常は少なくとも1つのルートフレームがあります)。ほとんどの場合、あなたが気にするのは、そのJFrameのcontentPaneです(ただし、ownedWindowsなどについても気にすることができます)。 JFrameから、次のようなコンテンツ・ペインを取得することができます

ので:

Component[] children = contentPane.getComponents(); 

を子供から:

Container contentPane = frame.getContentPane(); 

をそこから、あなたが使用して、コンポーネントのツリーを下る開始することができます親を得ることができます:

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」のリストは、[here](http://stackoverflow.com/questions/6671021)のように表示されます。 –