27

JButton1 つの参照を 2 つに追加してテストしようとしていますJPanelsが、追加された最初のパネルから消えてしまいます。

では、Swing コンポーネントを複数のコンテナーに追加することはできませんか?

前もって感謝します。

4

4 に答える 4

47

差出人:http ://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html :

各GUIコンポーネントは1回だけ含めることができます。コンポーネントがすでにコンテナ内にあり、それを別のコンテナに追加しようとすると、コンポーネントは最初のコンテナから削除されてから、2番目のコンテナに追加されます。

于 2011-01-06T22:27:15.840 に答える
6

お気づきのとおり、コンポーネントを共有することはできません。ただし、使用できる他のアプローチがあります。

JButton の場合、Action を共有できます。

JButton button1 = new JButton( someAction ); JButton button2 = new JButton( someAction );

詳細については、アクションの使用方法に関する Swing チュートリアルのセクションを参照してください。

他のケースでは、モデルを共有したい場合があります:

DefaultTableModel model = new DefaultTableModel( ... );
JTable table1 = new JTable( model );
JTable table2 = new JTable( model );

ソリューションは要件によって異なります。

于 2011-01-06T23:03:05.077 に答える
4

解決しました。

JavaチュートリアルのUI-Swingセクションで確認すると、それは言います。

各GUIコンポーネントは1回だけ含めることができます。コンポーネントがすでにコンテナ内にあり、それを別のコンテナに追加しようとすると、コンポーネントは最初のコンテナから削除されてから、2番目のコンテナに追加されます。
于 2011-01-06T22:28:42.573 に答える
1

それは不可能だと思います。できることは、同じイベントハンドラーを共有する複数のコンポーネントです。つまり、基本的に、あなたの場合、2つのボタンを宣言し、同じイベントハンドラーメソッドを使用します。

于 2011-01-06T22:28:08.597 に答える