是不是可以将Swing组件添加到多个容器中?

Jua*_*ego 26 java swing jcomponent jpanel jbutton

我正在尝试(测试其他东西)将一个JButton引用添加到两个中JPanels进行测试,它会从添加到的第一个面板中消失!

那么,不能将Swing组件添加到多个容器中吗?

先感谢您.

jzd*_*jzd 47

来自:http://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html:

每个GUI组件只能包含一次.如果组件已经在容器中并且您尝试将其添加到另一个容器,则该组件将从第一个容器中删除,然后添加到第二个容器中.

  • 谢谢您的帮助! (2认同)

cam*_*ckr 6

正如您所发现的,您无法共享组件.但是,您可以使用其他方法.

在JButtons的情况下,您可以共享一个Action:

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

有关更多信息,请阅读有关如何使用操作的Swing教程中的部分.

在其他情况下,您可能想要共享模型:

DefaultTableModel model = new DefaultTableModel( ... );
JTable table1 = new JTable( model );
JTable table2 = new JTable( model );
Run Code Online (Sandbox Code Playgroud)

解决方案取决于您的要求.