java - 将 JPanel 添加到多个 JFrames

标签 java swing jframe jpanel

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

我希望能够将上述 JPanel 添加到两个 JFrames。有什么建议吗?

这是我想要的例子

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();
    }
}

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

感谢任何人的帮助,这已经困扰我一段时间了。

最佳答案

我认为你做不到。当您向其中添加 Component 时,java.awt.Container 中的代码包含此花絮。在这里,阅读 ContainerJFramecompJPanel:

        /* 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");
            }
        }

(在 java.awt.Container.addImpl(Component, Object, int) 中)

就在那里,当您将它添加到不同的 Container 时,它会从旧的 Container 中删除它。我想您可以重写这个基本级别的 AWT 代码,但我不推荐这样做。

关于java - 将 JPanel 添加到多个 JFrames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20225868/

相关文章:

java - JButtons 没有正确显示 borderlayout,还有向按钮添加 actionListener 的问题

java - 经过验证的企业应用程序 Java 架构

Java 泛型类型实例化

java - 在Java/Swing中,是否可以在用户需要时创建新的 "main"JPanel对象?

java - 从 jTextArea 上的 shell 命令获取结果

java - 将 JButton 数组添加到 JPanel(按钮不可见)

java - 如何使用 Java Swing 将一堆 JPanel 添加到我的 JFrame 中?

java - JButton 在我滚动之前不可见

java - 有没有办法从父类(super class)访问子类元素?

java.lang.NoSuchMethodError : org. apache.http.protocol.BasicHttpContext: 方法 <init>()V 未找到