将JPanel添加到多个JFrame

Qui*_*ion 4 java swing jpanel jframe

我有一个包含大量上下文的JPanel.

我希望能够将所述JPanel添加到两个JFrame中.有小费吗?

这是我想要的例子

public class Test
{
    public static void main(String [] args)
    {
        JPanel panel = new JPanel();
        panel.add(new JLabel("Hello world"));
        panel.validate();

        JFrame frame1, frame2;
        frame1 = new JFrame("One");
        frame2 = new JFrame("Two");
        frame1.add(panel);
        frame2.add(panel);
        frame1.validate();
        frame2.validate();
        frame1.setVisible(true);
        frame2.setVisible(true);
        frame1.pack();
        frame2.pack();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望两个JFrame都显示hello world,而不是一个显示它而另一个显示为空.如果JPanel更新中的数据,我希望两个JFrame都显示它.

感谢任何人的帮助,这一直困扰着我.

dcs*_*ohl 6

我认为你不能.java.awt.Container当你添加一个代码时,代码包含这个花絮Component.这里,读JFrameContainer和你JPanelcomp:

        /* Reparent the component and tidy up the tree's state. */
        if (comp.parent != null) {
            comp.parent.remove(comp);
            if (index > component.size()) {
                throw new IllegalArgumentException("illegal component position");
            }
        }
Run Code Online (Sandbox Code Playgroud)

(那是java.awt.Container.addImpl(Component, Object, int))

所以就在那里,当你把它添加到另一个时Container,它将它从旧的中删除Container.我想你可以重写这个基本级别的AWT代码,但我不推荐它.