示例:
public class JFrameTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
JButton button = new JButton("Hello!");
frame.getContentPane().add(button);
frame.getContentPane().add(button);
frame.pack();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
}
});
}
}
在上面的示例中,即使没有错误,“按钮”对象也只添加一次。我问这个的原因是,我想在JFrame和JDialog上添加一个相同的JPanel对象(在某些表上双击以进行编辑/删除功能)。我能够通过拥有两个JPanel对象来解决它,但只是想知道为什么它不可能。
答案 0 :(得分:6)
您只能在Swing层次结构中添加一次Swing组件,如您所知。这在'Using top-level components tutorial'
中有记录每个GUI组件只能包含一次。如果组件已经在容器中并且您尝试将其添加到另一个容器,则该组件将从第一个容器中删除,然后添加到第二个容器中。
不完全确定是否存在技术限制让这个决定,但我可以想象,例如,如果你能够将相同的组件添加到两个Container
,getParent
方法会产生奇怪的结果}Š