2011-01-22 50 views
0

我想使用JfileChooser從所選文件中選擇文件並將writeObject選擇到所選文件或readObject。我已經序列化了我的課程,但我不知道如何序列化這個MetalFileChooserUI?或者我需要這樣做?非常感謝你。JFileChooser中的問題

smiliar error message to mine

有人可以幫助我找到一個解決辦法呢?謝謝。 我的錯誤消息:

java.io.NotSerializableException:javax.swing.plaf.metal.MetalFileChooserUI中 在java.io.ObjectOutputStream.writeObject0(來源不明) 在java.io.ObjectOutputStream.defaultWriteFields(未知(未知源) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeObject (Unknown Source) at javax.swing.ArrayTable.writeArrayTable(Unknown Source) at j avax.swing.ActionMap.writeObject(Unknown Source) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown源) 在java.io.ObjectStreamClass.invokeWriteObject(來源不明) 在java.io.ObjectOutputStream.writeSerialData(來源不明) 在java.io.ObjectOutputStream.writeOrdinaryObject(來源不明) 在java.io.ObjectOutputStream.writeObject0 (Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source) at javax.swing.JComponent.writeObject(Unknown Source) 在sun.reflect.GeneratedMethodAccessor10.invoke(未知來源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知來源) 在java.lang.reflect.Method.invoke(未知來源) 在java.io.ObjectStreamClass.invokeWriteObject (未知來源) 在java.io.ObjectOutputStream.writeSerialData(未知來源) 在java.io.ObjectOutputStream.writeOrdinaryObject(未知來源) 在java.io.ObjectOutputStream.writeObject0(未知來源) 在java.io.ObjectOutputStream中.OutputStream.writeOrdinaryObject(Unknown Source) at java.io.Object OutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source) at javax.swing.JList.writeObject(Unknown Source) at sun。 reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) 位於java.io.ObjectOutputStream.writeObject0(未知源) 位於java.io.ObjectOutputStream。defaultWriteFields(未知來源) 在java.io.ObjectOutputStream.writeSerialData(未知來源) 在java.io.ObjectOutputStream.writeOrdinaryObject(未知來源) 在java.io.ObjectOutputStream.writeObject0(未知來源) 在java.io. ObjectOutputStream.defaultWriteFields(來源不明) 在java.io.ObjectOutputStream.defaultWriteObject(來源不明) 在java.awt.Window.writeObject(來源不明) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在陽光下。 reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(未知來源)位於java.io.ObjectOutputStream.writeOrdinaryObject源) 在java.io.ObjectOutputStream.writeObject(來源不明) 在java.awt.Window.writeObject(來源不明) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke (未知來源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知來源) 在java.lang.reflect.Method.invoke(未知來源) 在java.io.ObjectStreamClass.invokeWriteObject(未知源) 在java.io.ObjectOutputStream.writeSerialData(未知來源) 在java.io.ObjectOutputStream.writeOrdinaryObject(未知來源) 在java.io.ObjectOutputStream.writeObject0(未知來源) 在java.io.ObjectOutputStream.writeObject(未知源) 在ver_2.sudoku_GUI.actionPerformed(sudoku_GUI.java:90) 在javax.swing.AbstractButton.fireActionPerformed(來源不明) 在javax.swing.AbstractButton中的$ Handler.actionPerformed(來源不明) 在javax.swing中。 DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.AbstractButton.doClick(Unknown Source) at javax.swing.pl af.basic.BasicMenuItemUI.doClick(Unknown Source) at javax.swing.plaf.basic.BasicMenuItemUI $ Handler.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent (未知源) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt .Container.dispatchEventImpl(未知來源) 在java.awt.Component.dispatchEvent(未知來源) 在java.awt.LightweightDispatcher.retargetMouseEvent(未知來源) 在java.awt.LightweightDispatcher.processMouseEvent(未知來源) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown源) 在java.awt.EventQueue.dispatchEvent(來源不明) 在java.awt.EventDispatchThread.pumpOneEventForFilters(來源不明) 在java.awt.EventDispatchThread.pumpEventsForFilter(來源不明) 在java.awt.EventDispatchThread.pumpEventsForHierarchy (Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread。運行(來源不明)

+0

你想要序列化到底是什麼? JFileChooser對象本身? – 2011-01-22 03:15:27

回答

2

如果不真正想要序列JFileChooser中,但你只是有一些類你的對它的引用(你需要序列化)作出參考transient所以序列化進程會簡單地忽略它。

2

我不知道你爲什麼想序列化一個文件選擇器,因爲這是什麼意思?我認爲最好的辦法是不要序列化程序的gui部分,而是序列化模型中的數據(假設是MVC結構) - 除非您有我們需要了解的需求。