JPanelを拡張したクラスがあります。プログラムが起動すると、パネルにデフォルトの描画(paintComponentで実装)があり、ユーザーはこのパネルに描画できます。
JPanel全体を(BLOBを使用して)mySQLデータベースに保存しようとしていますが、ロードすると、デフォルトの図面のみが表示されます(ユーザー入力なし)。グラフィックはシリアル化できないため、ObjectOutputStreamを使用して保存できないためだと思います。どうすれば全部を保存してからリロードできますか?
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;
}