Java BasicProgressBarUI.getPrefrerredSize的空指针异常

Java BasicProgressBarUI.getPrefrerredSize的空指针异常,java,swing,Java,Swing,执行SaveDialogclasssetVisible(true)行时,我遇到以下异常 当用户点击保存按钮时,此程序将启动。然后,它将在尝试保存序列化对象数据时显示状态对话框 public class SaveController implements ActionListener,Serializable{ private JButton = new JButton("Save"); public SaveController(){ saveButton.ad

执行
SaveDialog
class
setVisible(true
)行时,我遇到以下异常

当用户点击保存按钮时,此程序将启动。然后,它将在尝试保存序列化对象数据时显示状态对话框

public class SaveController implements ActionListener,Serializable{
    private JButton = new JButton("Save");
    public SaveController(){
         saveButton.addActionListener(this);
    }
    actionPerformed(ActionEvent ae){
       if(ae.getSource == saveButton){
             new saveDialog();
       }
    }
}

public saveDialog extends JDialog{
    public saveDialog(){

         SwingUtilites.invokeLater(new Runnabe()(
            public void run(){
                   // set up gui layout...add status lister
                   pack();
                   setVisible(true);// this is where it crashes
            }
         }
         SaveTask task = new SaveTask();
         task.addEventListener(this);
         task.execute()
     }
}

public class SaveTask extends SwingWorker<void,void>{

    public void doInBackground(){
        File f = new File("file");
        f.createNewFile();
        OutputStream file = new OutputStream("file");
        OutputStream buffer = new BufferedOutputStream(file);
        ObjectOutput output = new ObjectOutputStream(buffer);
        output.writeobject(object);
    }
}
公共类SaveController实现ActionListener,可序列化{
私有JButton=新JButton(“保存”);
公共存储控制器(){
saveButton.addActionListener(此);
}
已执行动作(动作事件ae){
如果(ae.getSource==saveButton){
新建saveDialog();
}
}
}
公共保存对话框扩展JDialog{
公共保存对话框(){
SwingUtilites.invokeLater(新Runnabe()(
公开募捐{
//设置gui布局…添加状态列表器
包装();
setVisible(true);//这就是它崩溃的地方
}
}
SaveTask=new SaveTask();
task.addEventListener(本);
task.execute()
}
}
公共类SaveTask扩展SwingWorker{
公共无效doInBackground(){
文件f=新文件(“文件”);
f、 createNewFile();
OutputStream文件=新的OutputStream(“文件”);
OutputStream buffer=新的BufferedOutputStream(文件);
ObjectOutput=新的ObjectOutputStream(缓冲区);
output.writeobject(对象);
}
}

获取异常。但是在哪里?添加stacktrace Please我以为输入了异常!空指针异常请学习java命名约定并坚持它们。这里是BasicProgressBarUI.getPreferredSize行820中的空指针异常。我没有完整的堆栈跟踪,但它是从我尝试执行setVisible(true)的代码开始的在“保存”对话框中