2010-12-13 60 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