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

时间:2011-01-06 22:23:26

标签: java swing jpanel jbutton jcomponent

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

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

提前谢谢。

4 个答案:

答案 0 :(得分:47)

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

  

可以包含每个GUI组件   只有一次。如果某个组件已经存在   在容器中,您尝试添加它   到另一个容器,组件   将从第一个删除   容器然后添加到   第二

答案 1 :(得分:6)

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

对于JButtons,您可以共享一个Action:

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

阅读How to Use Actions上的Swing教程中的部分以获取更多信息。

在其他情况下,您可能希望共享模型:

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

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

答案 2 :(得分:4)

解决。

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

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

答案 3 :(得分:1)

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