Swing:setContentPane在调用时不刷新接口

Jas*_*ers 1 java swing

我的applet有问题:当我需要它时它不会刷新.

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

我有一个

public class PixelRainEditorApp extends JApplet
Run Code Online (Sandbox Code Playgroud)

并在初始化

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

然后我有两个扩展JPanel的A和B类

public A(JApplet parent) {
   super(parent);
   setOpaque(true);
   setBackground(Color.BLACK);
   this.parent.setContentPane(this);
}
Run Code Online (Sandbox Code Playgroud)

当我点击视图A中的按钮时

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

和B与A相同但图像不同

public B(JApplet parent) {
       super(parent);
       setOpaque(true);
       setBackground(Color.BLACK);
       this.parent.setContentPane(this);
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我想要显示A时,这可以正常工作,但是当我想要在A中单击按钮时启动B时,没有任何反应.它只有当我调整B出现的窗口大小时...我试图使我的应用程序中的各个地方无效或重绘,但没有任何反应

有任何想法吗 ?

贾森

Sta*_*avL 5

只需添加this.parent.revalidate(); this.parent.repaint(); 在通话结束时.