Проблема в JFileChooser - PullRequest
       14

Проблема в JFileChooser

0 голосов
/ 22 января 2011

Я хочу использовать JfileChooser для выбора файла и записиObject в выбранный файл или readObject из выбранного файла. Я сериализировал свой класс, но я не знаю, как сериализовать этот MetalFileChooserUI ? Или мне нужно это сделать? Большое спасибо.

моё знакомое сообщение об ошибке

Может кто-нибудь помочь мне найти решение? Спасибо. Мое сообщение об ошибке:

java.io.NotSerializableException: javax.swing.plaf.metal.MetalFileChooserUI at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) в java.io.ObjectOutputStream.defaultWriteFields (Неизвестный источник) at java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) at java.io.ObjectOutputStream.writeOrdinaryObject (неизвестный источник) at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) at java.io.ObjectOutputStream.writeObject (неизвестный источник) на javax.swing.ArrayTable.writeArrayTable (неизвестный источник) at javax.swing.ActionMap.writeObject (неизвестный источник) at sun.reflect.GeneratedMethodAccessor11.invoke (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) в java.io.ObjectStreamClass.invokeWriteObject (Неизвестный источник) at java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) at java.io.ObjectOutputStream.writeOrdinaryObject (неизвестный источник) at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) в java.io.ObjectOutputStream.defaultWriteFields (Неизвестный источник) at java.io.ObjectOutputStream.defaultWriteObject (неизвестный источник) в javax.swing.JComponent.writeObject (Неизвестный источник) at sun.reflect.GeneratedMethodAccessor10.invoke (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) в java.io.ObjectStreamClass.invokeWriteObject (Неизвестный источник) at java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) at java.io.ObjectOutputStream.writeOrdinaryObject (неизвестный источник) at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) в java.io.ObjectOutputStream.defaultWriteFields (Неизвестный источник) at java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) at java.io.ObjectOutputStream.writeOrdinaryObject (неизвестный источник) at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) в java.io.ObjectOutputStream.defaultWriteFields (Неизвестный источник) at java.io.ObjectOutputStream.defaultWriteObject (неизвестный источник) на javax.swing.JList.writeObject (неизвестный источник) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) в java.io.ObjectStreamClass.invokeWriteObject (Неизвестный источник) at java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) at java.io.ObjectOutputStream.writeOrdinaryObject (неизвестный источник) at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) в java.io.ObjectOutputStream.defaultWriteFields (Неизвестный источник) at java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) at java.io.ObjectOutputStream.writeOrdinaryObject (неизвестный источник) at java.io.ObjectOutputStream.writeObject0 (неизвестный источник) в java.io.ObjectOutputStream.defaultWriteFields (Неизвестный источник) at java.io.ObjectOutputStream.defaultWriteObject (неизвестный источник) на java.awt.Window.writeObject (неизвестный источник) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник)в java.io.ObjectStreamClass.invokeWriteObject (Неизвестный источник) в java.io.ObjectOutputStream.writeSerialData (Неизвестный источник) в java.io.ObjectOutputStream.writeOrdinaryObject (Неизвестный источник) в java.io.ObjectOutputbject.io.ObjectOutputStream.writeObject (Неизвестный источник) в java.awt.Window.writeObject (Неизвестный источник) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke at Unknown (неизвестно).DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) в java.io.ObjectStreamClass.invokeWriteObject (Неизвестный источник) в java.io.ObjectOutputStream.write.io Unknown).ObjectOutputStream.writeOrdinaryObject (Неизвестный источник) в java.io.ObjectOutputStream.writeObject0 (Неизвестный источник) в java.io.ObjectOutputStream.writeObject (Неизвестный источник) в ver_2.sudoku_GUI.actionPerformed: sw.jujj.AbstractButton.fireActionPerformed (Неизвестный источник) в javax.swing.AbstractButton $ Handler.actionPerformed (Неизвестный источник) в javax.swing.DefaultButtonModel.fireActionPerformed (Неизвестный источник) в javax.swing.DefaultButtonModel.setPressed (Неизвестный источник) в javax.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.awt.LightweightDispatcher.dispatchEvent (Ункнеизвестный источник) в java.awt.Container.dispatchEventImpl (неизвестный источник) в java.awt.Window.dispatchEventImpl (неизвестный источник) в java.awt.Component.dispatchEvent (неизвестный источник) в java.awt.EventQue..dispatchEvent) в java.awt.EventDispatchThread.pumpOneEventForFilters (Неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForFilter (Неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForHierarchy (Неизвестный источник) Причины).java.awt.EventDispatchThread.pumpEvents (неизвестный источник) в java.awt.EventDispatchThread.run (неизвестный источник)

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Я не уверен, почему вы захотите сериализовать средство выбора файлов, каков в этом смысл?Я думаю, что вам лучше всего не сериализовать часть графического интерфейса программы, а скорее данные, хранящиеся в модели (с учетом структуры MVC) - если у вас нет требований, о которых нам нужно знать.

2 голосов
/ 22 января 2011

Если вы на самом деле не хотите сериализовать JFileChooser, но у вас просто есть ссылка на него в каком-то вашем классе (который вам нужно сериализовать), сделайте эту ссылку transient, чтобы процесс сериализации просто игнорировал ее. *

...