【发布时间】:2011-06-13 13:07:57
【问题描述】:
我想使用 JfileChooser 选择一个文件并将对象写入所选文件或从所选文件中读取对象。我已经序列化了我的课程,但我不知道如何序列化这个 MetalFileChooserUI?还是我需要这样做?非常感谢。
有人可以帮我找到解决方案吗?谢谢你。 我的错误信息:
java.io.NotSerializableException: javax.swing.plaf.metal.MetalFileChooserUI 在 java.io.ObjectOutputStream.writeObject0(未知来源) 在 java.io.ObjectOutputStream.defaultWriteFields(未知来源) 在 java.io.ObjectOutputStream.writeSerialData(未知来源) 在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源) 在 java.io.ObjectOutputStream.writeObject0(未知来源) 在 java.io.ObjectOutputStream.writeObject(未知来源) 在 javax.swing.ArrayTable.writeArrayTable(未知来源) 在 javax.swing.ActionMap.writeObject(未知来源) 在 sun.reflect.GeneratedMethodAccessor11.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.defaultWriteFields(未知来源) 在 java.io.ObjectOutputStream.defaultWriteObject(未知来源) 在 javax.swing.JComponent.writeObject(未知来源) 在 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.defaultWriteFields(未知来源) 在 java.io.ObjectOutputStream.writeSerialData(未知来源) 在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源) 在 java.io.ObjectOutputStream.writeObject0(未知来源) 在 java.io.ObjectOutputStream.defaultWriteFields(未知来源) 在 java.io.ObjectOutputStream.defaultWriteObject(未知来源) 在 javax.swing.JList.writeObject(未知来源) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 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.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(Native Method) 在 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(未知来源) 在 java.awt.Window.writeObject(未知来源) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 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(未知来源) 在 javax.swing.DefaultButtonModel.setPressed(未知来源) 在 javax.swing.AbstractButton.doClick(未知来源) 在 javax.swing.plaf.basic.BasicMenuItemUI.doClick(未知来源) 在 javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(未知来源) 在 java.awt.Component.processMouseEvent(未知来源) 在 javax.swing.JComponent.processMouseEvent(未知来源) 在 java.awt.Component.processEvent(未知来源) 在 java.awt.Container.processEvent(未知来源) 在 java.awt.Component.dispatchEventImpl(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.processMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.dispatchEvent(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Window.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.EventQueue.dispatchEvent(未知来源) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.run(未知来源)
【问题讨论】:
-
你到底想序列化什么? JFileChooser 对象本身?
-
谢谢大家,可能我没有把问题描述清楚,我使用JFileChooser 来获取我想要保存到的文件,然后使用ObjectOutputStream 将我已经序列化的类写入所选文件.出现错误,我只是想知道为什么会这样,因为 ObjectOutputStream 与 JFilechooser 无关。我想先尝试transient。感谢科斯蒂丘达图。 :)
标签: java swing serialization jfilechooser