串行化

moonboy1980 2004-04-15 09:37:01
String与JEditorPane中的setText()的String有什么不同啊,当我用带有中文的String串行化时就没有问题,而中文写进setText()中String去串行化就说我没有串行化啊--只有英文是可以的.
...全文
134 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonboy1980 2004-04-18
  • 打赏
  • 举报
回复
"这个程序里还有个问题,不知道你有没有注意到,这个好象是虚拟机的问题,也是我没有掌握好java的句柄啊,我之所以在read按钮事件中加了一句System.out.println(editor.getText());就是因为JEditorPane中的内容不能再读取了,editor指象的对象已经不再是以前的了,为什么就中断了呢?这个句柄又不是指象空的地方."
我知道这个问题的答案了,真晕,前两天刚犯了这样的错误,没有想到还是句柄的问题,我真是太笨了,太疏忽了,这样的问题不经过大脑就拿来问,还麻烦大家,真 不好意思.
不过那个串行化还是没有搞明白.
moonboy1980 2004-04-17
  • 打赏
  • 举报
回复
因为 我比较菜又比较懒,所以这个问题我前几天问过了,本来是想有人遇到过的话我就少走些弯路,可是没有人遇到过这种情况,也许只有我这样的菜鸟才会犯一些低级错误,但我真的是不清楚到底哪里出了问题.
不得以我只好进行修改测试,结果转化了还是不行,不知道是不是我的中文转化那一块有问题(我对这个技术还不怎么会用),所以另外写了这个测试,能让帮助我的前辈减少一些麻烦,希望各位高手能看出问题帮我解决了.
我的机子运行jb比较慢,也许当初做我的毕业设计的时候就不该选择这个工具,可现在已选了,就用他把.
moonboy1980 2004-04-17
  • 打赏
  • 举报
回复
你试过了在里面写中文的情况了吗?
我是用的JBuilder9,你用的什么环境啊?
真的和我的环境有关的话,我连测试都不知道怎么做了啊,真郁闷!
这个程序里还有个问题,不知道你有没有注意到,这个好象是虚拟机的问题,也是我没有掌握好java的句柄啊,我之所以在read按钮事件中加了一句System.out.println(editor.getText());就是因为JEditorPane中的内容不能再读取了,editor指象的对象已经不再是以前的了,为什么就中断了呢?这个句柄又不是指象空的地方.你能帮我解释一下吗?
先谢谢了!
moonboy1980 2004-04-16
  • 打赏
  • 举报
回复
我说的串行化是Serializable,他和序列化是一个意思把?
我没有在网络上传输.
我是定义了一个类,其中有几个String 的字段和一个JEditorPane字段,我把这个类用ObjectOutputStream写到文件里啊,当我在JEditorPane里写的是英文的时候就可以写到文件中,如果里面包含中文就说我没有Serializable,其他的几个字段都没有问题的,而且里面是中文的.这个问题捆了我好几天,我就是想 不明白,我现在用String把JEditorPane代替了,取出来再赋给JEditorPane就没有问题,不过这样的话就会失去以前对他们的效果处理啊.我是在做文本处理的小程序.
jerrygui 2004-04-16
  • 打赏
  • 举报
回复
应该是你环境的问题,我已经测试过,在我电脑上,是可以run的,而且没有出错信息!
moonboy1980 2004-04-16
  • 打赏
  • 举报
回复
我已经做了一个小实验,代码如下:
package test;

import java.io.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
public class Test {
static JEditorPane editor = new JEditorPane();

public static void main(String agrs[]){
JFrame frame = new JFrame();
JButton write = new JButton("write");
JButton read = new JButton("read");
read.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
File file = new File("test.tt");
try{
ObjectInputStream in = new ObjectInputStream(
new FileInputStream(file));
editor = (JEditorPane)in.readObject();
System.out.println(editor.getText());
}catch(Exception ex){
System.out.println("has a error!");
}
}
});
write.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
File file = new File("test.tt");
try{
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream(file));
out.writeObject(editor);
}catch(FileNotFoundException ex){
System.out.println("has a FileNotFoundException!");
}catch(IOException ex){
ex.printStackTrace();
System.out.println("has a IOException!");
}
}
});
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(editor,BorderLayout.CENTER);
frame.getContentPane().add(read,BorderLayout.NORTH);
frame.getContentPane().add(write,BorderLayout.SOUTH);
frame.setSize(500,400);
frame.setVisible(true);
}
}
如果我没有设置内容类型他就出现这个错误:
java.io.NotSerializableException: javax.swing.text.GapContent$StickyPosition
如果我设置了以下两种就出现下面的错误:
editor.setContentType("UTF-8");
editor.setContentType("ISO-8859-1");
java.io.NotSerializableException: java.lang.Object
都把我搞晕了,到底哪里有问题啊?
moonboy1980 2004-04-16
  • 打赏
  • 举报
回复
这个我没有做过啊,实在抱歉.我觉得可能是你的路径有问题,没有在CLASSPATH中包含进 去这个类,你加上路径再试试看怎么样.
swankiecsdn 2004-04-16
  • 打赏
  • 举报
回复
我查一句
我在做一个相关的程序,涉及到映象问题,可以查看类的内部方法,
但是我现在只能访问包中的类,如果不在包中,救出错
例如:我访问“C:\hello.class”,就会出现notfoundclass 的异常
请楼主和过客帮帮忙
jerrygui 2004-04-15
  • 打赏
  • 举报
回复
你最好定义一个类

class XXXXX extends JEditorPane implements java.io.Serializable{
}
yongfans 2004-04-15
  • 打赏
  • 举报
回复
你说的是序列化么,如果是的话在网络传输中就会有问题,
不过java中Swing组件都已经实现了序列化,除非是你自己定义的对象需要实现序列化接口。
你说的中英文应该是没问题
xulei_ice 2004-04-15
  • 打赏
  • 举报
回复
你可以用调试的方法看看那个String 到底是什么。

说不定从中你可以找到答案!
RaiNnY1006 2004-04-15
  • 打赏
  • 举报
回复
String都是一样的。不存在中文英文的问题。
你所说的串行化是指什么?是Serializable吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧