Article View: borland.public.jbuilder.java.api
Article #938On java.io.NotSerializableException: java.lang.Object
From: Worm Online
Date: Mon, 08 Jul 2002 07:45
Date: Mon, 08 Jul 2002 07:45
187 lines
6504 bytes
6504 bytes
Hi,
I met a problem on using ObjectStrem.writeObject(Object). I have an
jTextPane object, if the jTextPane object contains only english letters, the
writeobject(obj) works well, if the jTextPane contains chinese letters, the
writeObject(obj) throws an exception "java.io.NotSerializableException:
java.lang.Object".
Could anyone give some advice? Thank you in advance.
Main Program
====================================================
import javax.swing.UIManager;
import java.awt.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class testRTF {
private boolean packFrame = false;
//Construct the application
public testRTF() {
Frame1 frame = new Frame1();
//Validate frames that have preset sizes
//Pack frames that have useful preferred size info, e.g. from their
layout
if (packFrame) {
frame.pack();
}
else {
frame.validate();
}
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
}
//Main method
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new testRTF();
}
}
JTextPane's frame
====================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class Frame1 extends JFrame implements java.io.Serializable{
private JPanel contentPane;
private JMenuBar jMenuBar1 = new JMenuBar();
private JMenu jMenuFile = new JMenu();
private JMenuItem jMIExit = new JMenuItem();
private JMenu jMenuHelp = new JMenu();
private JMenuItem jMenuHelpAbout = new JMenuItem();
private JLabel statusBar = new JLabel();
private BorderLayout borderLayout1 = new BorderLayout();
private JTextPane jTextPane1 = new JTextPane();
private JMenuItem jMIOpen = new JMenuItem();
private JMenuItem jMISave = new JMenuItem();
//Construct the frame
public Frame1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResou
rce("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("Frame Title");
statusBar.setText(" ");
jMenuFile.setText("File");
jMIExit.setText("Exit");
jMIExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMIExit_actionPerformed(e);
}
});
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
jMenuHelpAbout.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuHelpAbout_actionPerformed(e);
}
});
jTextPane1.setText("\u6D4B\u8BD5\u4E2D\u6587");
//\u6D4B\u8BD5\u4E2D\u6587 is "��������"
// If you change \u6D4B\u8BD5\u4E2D\u6587 to
// jTextPane1.setText("test chinese");
// the program runs well.
jMenuFile.addSeparator();
jMIOpen.setText("Open");
jMIOpen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jMIOpen_actionPerformed(e);
}
});
jMISave.setText("save");
jMISave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jMISave_actionPerformed(e);
}
});
jMenuFile.add(jMIOpen);
jMenuFile.add(jMISave);
jMenuFile.add(jMIExit);
jMenuHelp.add(jMenuHelpAbout);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
this.setJMenuBar(jMenuBar1);
contentPane.add(statusBar, BorderLayout.SOUTH);
contentPane.add(jTextPane1, BorderLayout.CENTER);
}
//File | Exit action performed
public void jMIExit_actionPerformed(ActionEvent e) {
System.exit(0);
}
//Help | About action performed
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMIExit_actionPerformed(null);
}
}
void jMIOpen_actionPerformed(ActionEvent e) {
}
void jMISave_actionPerformed(ActionEvent e) {
Vector vect=new Vector();
try {
FileOutputStream fstrm = new FileOutputStream("tmp.rtf");
ObjectOutput ostrm = new ObjectOutputStream(fstrm);
vect.add(jTextPane1.getDocument());
ostrm.writeObject(vect);
//If you not use Vector, use this line instead.
//ostrm.writeObject(jTextPane1.getDocument());
// still throw exception
fstrm.flush();
} catch (Exception ex) {
// should put in status panel
ex.printStackTrace();
}
}
}
Technical Details
Message-ID:
<3d2941ad_1@dnews>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!newsswitch.lcs.mit.edu!nntp.flash.net!newsfeed.wirehub.nl!PeerFeed.KWeb.on.ca!dnewsShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII X-Google-Thread: 1089d0,37aa6d68d3c616d,start X-Google-Attributes: gid1089d0,public X-Google-ArrivalTime: 2002-07-08 00:48:28 PST From: "Worm Online" <worm_online@ubsys.net> Newsgroups: borland.public.jbuilder.java.api Subject: On java.io.NotSerializableException: java.lang.Object Date: Mon, 8 Jul 2002 15:45:51 +0800 Lines: 190 Organization: UBsys X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 NNTP-Posting-Host: 218.2.178.97 Message-ID: <3d2941ad_1@dnews> X-Trace: dnews 1026113965 218.2.178.97 (8 Jul 2002 00:39:25 -0700) Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!newsswitch.lcs.mit.edu!nntp.flash.net!newsfeed.wirehub.nl!PeerFeed.KWeb.on.ca!dnews