2010-12-13 62 views
1

我的applet出现问题:当我需要时它不刷新。Swing:setContentPane调用时没有刷新接口

我试图从一个界面屏幕切换到另一个,当我点击按钮。

我有一个

public class PixelRainEditorApp extends JApplet 

和在init

SwingUtilities.invokeAndWait(new Runnable() { 
    public void run() { 
     createGUI(); 
    } 
}); 
private void createGUI() { 
    a = new A(this); 
    this.setSize(800, 480); 
} 

然后,我有2类A和B延伸的JPanel

public A(JApplet parent) { 
    super(parent); 
    setOpaque(true); 
    setBackground(Color.BLACK); 
    this.parent.setContentPane(this); 
} 

当我点击在一个按钮查看A

@Override 
public void actionPerformed(ActionEvent e) { 
    if(TAG.equalsIgnoreCase(e.getActionCommand())){ 
     new B(this.baseParent); 
    } 
} 

和B是与A相同,但不同的图像

public B(JApplet parent) { 
     super(parent); 
     setOpaque(true); 
     setBackground(Color.BLACK); 
     this.parent.setContentPane(this); 
    } 

现在,当我想显示这工作得很好,但是当我想要启动B时的我点击在A,没有一个按钮发生。 它只有当我调整窗口,B出现的大小... 我试图无效或重绘和我的应用程序中的各种地方,但没有任何反应

任何想法?

杰森

+0

如何添加类B的实例? – 2010-12-13 08:40:05

+0

编辑我的问题,我很确定它的东西这么愚蠢:S – 2010-12-13 08:48:15

+0

我不认为这是愚蠢的,我在过去有类似的问题,我确信我的代码是正确的。尝试revalidate()方法(如果可用),尝试不同的外观和感觉(我不确定 - 我不记得,但我可能用这种方式“修复”我的问题)。 – 2010-12-13 08:58:35

回答

4

只需添加 this.parent.revalidate(); this.parent.repaint(); 您的通话结束。

+0

是的,它终于开始工作,当我把视图切换器就位,并能够集中更改(我有一个恶梦的线程/稍后invokor /摆动导致刷新问题)。 – 2010-12-14 02:47:28