スイング:コンテナとして動作するように「薄い」標準コンポーネント?
質問
私はJPanelのを拡張し、別のカスタムコンポーネントを追加できるプレースホルダとして使用することができますSwingで標準コンテナ(?JPanelの)を選択する必要があります:
JPanel containerPanel;
// built by a library from a text file, automatically part of a nice layout
MyPanel componentPanel;
// something complicated that I can't integrate with the builder library
containerPanel = builder.getMyContainerPanel();
componentPanel = new MyPanel(...);
containerPanel.add(componentPanel);
何とか夫婦2つのパネルのサイズを適切リサイズ機能するようにする方法はありますか?私は、スイング中に作品のサイズを変更する方法は非常にわからないんだけど、外containerPanel
は私componentPanel
とインナーパネルにできるだけ多くのアウターパネルの代表者に従属である薄いラッパーであるために、私がしたいことはあります。
私は物事をこの方法を行うにはしたくないが、それは私のカスタムコンポーネントからビルダーライブラリを分離するための最良の方法のように思える。
解決
私は単に GridLayout
を使用したいですます。
containerPanel.setLayout(new GridLayout(1, 1));
これは、あなただけのパラメータを指定せずにサブパネルを追加することができるという利点を持っており、全体の領域を使用することが保証されて
containerPanel.add(componentPanel);
他のヒント
あなたはBorderLayout
を使用してBorderLayout.CENTER
位置にデリゲートコンテナを追加することができます。
うーん。まあ、私は私のコンポーネント、その代わりにJPanelの(継承)を拡張するクラスを書き換えることを決めた、それは、組成物を使用し、パラメータとして空のJPanelで構成されている+それはJPanelのに子コンポーネントが追加されます。だから私はその後、私は今、私は私が一緒に結合された保つために持っていることを代わりにそれらの2の1つのJPanelを持って、私自身のコンポーネントのコンストラクタにそれを渡す、空のJPanelを構築するビルダーライブラリを使用することができます。