2017-04-17 130 views
1

为什么不是面板加载。我无法确定它是否正确保存。从GUI读取二进制文件

public void saveParks(JPanel parkingPanel) throws IOException 
    { 
     //save parkingPanel JPanel that contains the two car parks 
     ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("saveParkPanel.dat")); 

     output.writeObject(parkingPanel); 
     System.out.println("saved"); 
     output.close(); 
    } 

    public void loadParks() throws FileNotFoundException, IOException, ClassNotFoundException 
    { 

     ObjectInputStream input = new ObjectInputStream(new FileInputStream("saveParkPanel.dat")); 

     JPanel parkingPanel = (JPanel)input.readObject(); 
     System.out.println("loaded"); 
    } 

} 

回答

0

为什么不是面板搬入。

因为您不添加它在JWindowJFrame
正在载入您以前序列化的JPanel实例不足以显示它。

尝试类似:

JPanel parkingPanel = (JPanel)input.readObject(); 
JFrame frame = new JFrame(); 
frame.setVisible(true); 
frame.add(parkingPanel); 

我无法分辨它是否选择保存正确。

如果您在序列化过程中没有任何NotSerializableException,这是相当好的标志。

+0

该类是一个JPanel构造函数,它扩展了JPanel。 – Nebula

+0

是的,但要显示它,你必须将它添加到'RootPaneContainer'如JFrame。 – davidxxx

+0

试过了,我得到错误的sym类型:CarPark.AddVehiclePanel.loadParks 我在哪里尝试并调用该方法。它说我需要一个JFrame参数,但是当我把loadParks(框架)当然是框架超出范围。 – Nebula