我试图在两个不同的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();
}
});
Run Code Online (Sandbox Code Playgroud)
Swing组件仅允许具有单个父组件.您可能无法将组件添加到两个容器中.
来自http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html
每个GUI组件只能包含一次.如果组件已经在容器中并且您尝试将其添加到另一个容器,则该组件将从第一个容器中删除,然后添加到第二个容器中.
换句话说,Swing要求将组件排列在树层次结构中.
解决方案:您基本上需要将单例类拆分为模型类和视图类.(查看http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller上的MVC模式)然后实例化模型的多个视图.
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |