2017-04-17 199 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