不能将Swing组件添加到多个容器中?

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

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

先谢谢你。

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

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

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

对于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 ); 

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

解决了。

它说,检查Java Tutorial的UI-Swing部分。

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

我不认为这是可能的。 你可以做的是,有多个组件共享同一个事件处理程序。 基本上,在你的情况下,声明两个按钮并使用相同的事件处理程序方法。