我有一個我寫的擴展了JPanel的類。當程序啓動時,面板上有一個默認的繪圖(在paintComponent中實現),用戶可以在這個面板上繪圖。我試圖將整個JPanel保存到mySQL數據庫(使用BLOB),這很好,但是當我加載它時,我只能看到默認繪圖(沒有用戶輸入)。我想這是因爲圖形不可序列化,因此無法使用ObjectOutputStream進行保存。 任何想法我怎麼能保存整個事情,然後重新加載它?將JPanel保存到mySQL數據庫(Java)
我的方式JPanel中保存到數據庫:
protected byte [] convertImageToBytes()
{
try
{
Connection conn = new SQLConnection("MYDB").getConnection();
PreparedStatement ps=null;
String sql;
RoundTop rt = StoneGUI.getStoneTop(); //MY CUSTOM PANEL CLASS
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
//oos.writeObject(StoneGUI.getStoneTop());
oos.writeObject(rt);
oos.flush();
oos.close();
bos.close();
byte [] data= bos.toByteArray();
sql="UPDATE StonesDB SET image= ? WHERE lotNumber=5555;";
ps=conn.prepareStatement(sql);
ps.setObject(1, data);
ps.execute();
return data;
}
catch (Exception ex)
{
System.err.println(ex);
return null;
}
爲了更好地幫助您更快地發佈[SSCCE](http://sscce.org/),順便說一下BLOB,您可以使用FileIO從數據庫讀取/寫入數據庫 – mKorbel
您至少應該發佈您的JPanel。 –
不要試圖保存'JPanel'。在「BufferedImage」中繪製並顯示在面板中。這裏是[示例](http://stackoverflow.com/a/12683632/418556)。序列化'BufferedImage'。 –