gpt4 book ai didi

java - 如何同时在两个不同的框架中显示Singleton类的面板?

转载 作者:行者123 更新时间:2023-12-03 01:48:19 24 4
gpt4 key购买 nike

我试图在两个不同的 Jframe 上显示一个单例 obj,但它仅显示在最后添加该对象的 Jframe 中(在示例 Frame2 中)。其他Jframe是空的。这个Singleton类继承自Panel,并且里面包含一个标签。谁能告诉我如何在两个不同的框架中显示这个单例对象?

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable()
{
public void run() {
NewJFrame inst = new NewJFrame();
inst.setTitle("Frame1");
inst.setSize(300, 300);
inst.setLocationRelativeTo(null);
inst.setVisible(true);
singltonpanel _sin = singltonpanel.instance();
inst.add(_sin);
inst.repaint();
JFrame frame = new JFrame("Frame2");
frame.setSize(300, 300);
frame.setVisible(true);
singltonpanel _sin1 = singltonpanel.instance();
frame.add(_sin1);
frame.repaint();
}
});

最佳答案

Swing 组件只允许有一个父组件。您不能将一个组件添加到两个容器中。

来自http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Each GUI component can be contained only once. If a component is already in a container and you try to add it to another container, the component will be removed from the first container and then added to the second.

换句话说,Swing 要求您的组件按树形层次结构排列。

解决方案:您基本上需要将单例类分解为模型类和 View 类。 (查看 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 处的 MVC 模式)然后实例化模型的多个 View 。

关于java - 如何同时在两个不同的框架中显示Singleton类的面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com