Java 未更新静态JPanel内容

Java 未更新静态JPanel内容,java,swing,debugging,jpanel,Java,Swing,Debugging,Jpanel,有一个类有一个静态方法:ChangePanel,它将静态JPanel的内容更改为新内容。Frame是静态JPanel的变量名 public static void ChangePanel(JPanel jp) { Javaassignment1b.Driver.Frame.getContentPane().removeAll(); Javaassignment1b.Driver.Frame.add(jp); Javaassignme

有一个类有一个静态方法:ChangePanel,它将静态JPanel的内容更改为新内容。Frame是静态JPanel的变量名

 public static void ChangePanel(JPanel jp)
    {

        Javaassignment1b.Driver.Frame.getContentPane().removeAll();

        Javaassignment1b.Driver.Frame.add(jp);

        Javaassignment1b.Driver.Frame.validate();

    } 
当在actionlistener添加其功能的JPanel上实现此静态方法时,它会按预期工作

范例

当我试图通过JOptionPane的返回值更改静态JPanel的内容时,我不明白为什么它不起作用

public class RetryPanel extends JPanel
{
    RetryPanel()
    {
        jp = new JOptionPane();

        //reply will be 1 for No , 0 for yes
        int reply = JOptionPane.showConfirmDialog(null,"Would you like to start a new game ???","Message Title",JOptionPane.YES_NO_OPTION );

        if ( reply == 0)
        {
            //player wants to play a new game , retry


        }
        else
        {
            //player wants to quit
            //doesnt work in this case
            SelectAdminUserPanel saup = new SelectAdminUserPanel();
            Utility.ChangePanel(saup);
        }

    }

    JOptionPane jp;
}
使用调试器显示我的代码被执行了,但是它没有改变静态Jpanel内容,我怀疑它可能与线程有关,有人能帮我解决这个问题吗

注意:我知道CardLayout是更改JPanel的更好选择,但出于遗留原因,我需要弄清楚这一点


谢谢

1我担心您的代码中有一个bug没有显示出来。2当我看到静电被用在不该用的地方时,我也很担心。考虑创建和发布您的评论,测试,并可能固定。静态不是你的朋友…1在一个空间中的许多组件,使用一个如在这看到的。源代码中一行空白就足够了。{或}之前的空行通常也是多余的。
public class RetryPanel extends JPanel
{
    RetryPanel()
    {
        jp = new JOptionPane();

        //reply will be 1 for No , 0 for yes
        int reply = JOptionPane.showConfirmDialog(null,"Would you like to start a new game ???","Message Title",JOptionPane.YES_NO_OPTION );

        if ( reply == 0)
        {
            //player wants to play a new game , retry


        }
        else
        {
            //player wants to quit
            //doesnt work in this case
            SelectAdminUserPanel saup = new SelectAdminUserPanel();
            Utility.ChangePanel(saup);
        }

    }

    JOptionPane jp;
}