0

我想要一个从一帧到另一帧的过渡中的临时加载屏幕。在大型机中,我创建了创建另一个屏幕(就业框架)的加载屏幕。它只是创建它,它还没有显示它。

在就业框架中,我放置了一些在加载框架loadingframe.setloadingbar()中调用该setloadingbar方法的方法。这可以完美运行,直到达到 100。getvalue() == 100它应该设置employmentframe可见,但它给了我一个nullpointerexception. 这很奇怪,因为创建了就业屏幕。

代码如下 -

就业框架:

   public EmploymentFrame(int eid, JFrame thisframe) {         
        initComponents();
        //loadCaseFileList();
        e_id = eid;
        loadCourseList();
        EmploymentFrame.thisframe = thisframe;
        LoadingFrame.setLoadingBar(1);
    }
    public static void setEmploymentFrameVisible()
    {
       thisframe.setVisible(true);
    }

加载框架:

private static JFrame Employmentframe;
private static int oldvalue;
private int e_id;
public LoadingFrame(int type, int eid) {
    initComponents();
    this.e_id = eid;
    if(type == 1)
    {
        Employmentframe = new EmploymentFrame(eid, Employmentframe); 
    }
}

   public static void setLoadingBar(int load)
   {
       oldvalue = LoadingBar.getValue();
       System.out.println(""+oldvalue);
       int newvalue = oldvalue+load;
       System.out.println("nv"+newvalue);
       LoadingBar.setValue(newvalue);
       if(LoadingBar.getValue() == 100)
       {
           EmploymentFrame.setEmploymentFrameVisible();
       }
   }

谢谢。

4

1 回答 1

1

堆栈跟踪表明这一行正在抛出NPE

thisframe.setVisible(true);

thisframe也是null。_

当你Employmentframe在这里创建

Employmentframe = new EmploymentFrame(eid, Employmentframe); 

由于尚未初始化,您将null作为参数传入构造函数。JFrame实际上,EmploymentFrame不需要传递它自己的实例。


还有许多其他问题:

  • 静态方法在任何 OO 语言中都被视为糟糕的设计选择
  • 多个JFrames被认为难以管理。首选的替代方案是 1.) CardLayout on singleJFrame或 2.) 在需要多个窗口情况下,可以使用JFrame带有模态的单个窗口。JDialog也在这里讨论。
  • Java 中的代码约定表明变量应该以小写字母开头。
于 2013-01-27T11:53:49.037 回答