我正在尝试(测试其他东西),将一个 JButton
引用添加到两个 JPanels
中进行测试,但它从第一个面板中消失了!
那么,Swing 组件不能被添加到多个容器中吗?
提前感谢您的回答。
我正在尝试(测试其他东西),将一个 JButton
引用添加到两个 JPanels
中进行测试,但它从第一个面板中消失了!
那么,Swing 组件不能被添加到多个容器中吗?
提前感谢您的回答。
来自: http://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html:
每个GUI组件只能被包含一次。如果一个组件已经在一个容器中,并且你尝试将它添加到另一个容器中,那么该组件将从第一个容器中移除,然后再添加到第二个容器中。
正如您发现的那样,您无法共享组件。但是有其他方法可供使用。
对于JButtons,您可以共享一个Action:
JButton button1 = new JButton( someAction ); JButton button2 = new JButton( someAction );
阅读Swing教程中关于如何使用Actions的部分以获取更多信息。
在其他情况下,您可能希望共享模型:
DefaultTableModel model = new DefaultTableModel( ... );
JTable table1 = new JTable( model );
JTable table2 = new JTable( model );
解决方案取决于您的要求。
已解决。
查看Java教程的UI-Swing部分,其中写到:
每个GUI组件只能被包含一次。如果一个组件已经在一个容器中,并且你尝试将它添加到另一个容器中,该组件将从第一个容器中移除并添加到第二个容器中。
我认为这是不可能的。你可以做的是让多个组件共享同一个事件处理程序。因此,在你的情况下,声明两个按钮并使用相同的事件处理方法。