您的位置:首页 > 编程语言 > PHP开发

JTextPane 内容的保存:图文格式保存的解决

2013-10-16 15:25 183 查看
一般而言,JTextPane的getText只能得到String,不能对文字的格式,和里面的图文进行保存

使用HTMLEditorKit可以保存文字的格式,在JTextPane中没有图片的时候,这种方式很方便和简单,核心代码可见writeHtml方法,从实现来说就是将JTextPane中的Document对象使用HTMLEditorKit的write写到文件中即可。

但对于复杂的JTextPane来说,图片及其他各种各样的格式非常常见,杀手锏只有一种方法就是序列化,关于这点的核心代码可以见saveAsObj和ReadFromObj方法,即写的时候直接使用ObjectOutputStream的writeObject方法就可以了,而读先从ObjectInputstream中readObject中读出对象,然后使用docTextPane.setStyledDocument(doc);Validae()即可在界面上展示出来。

 

public void wirteHTML() {

StyledDocument doc = (StyledDocument) docTextPane.getDocument();

HTMLEditorKit kit = new HTMLEditorKit();

BufferedOutputStream out;
try {
File writeF = new File("D://share/tesss_html");
if (!writeF.exists()) {
writeF.createNewFile();
}
out = new BufferedOutputStream(new FileOutputStream(writeF));
kit.write(out, doc, doc.getStartPosition().getOffset(),doc.getLength());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
}


public void saveAsObj() {

try {
File writeF = new File("D://share/tesss_obj");
if (!writeF.exists()) {
writeF.createNewFile();
}
StyledDocument doc = (StyledDocument) docTextPane.getDocument();
FileOutputStream fos = new FileOutputStream("D://share/tesss_obj");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(doc);
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void readFromObj() {
try {
File writeF = new File("D://share/tesss_obj");
if (!writeF.exists()) {
return;
}
FileInputStream fis = new FileInputStream("D://share/tesss_obj");
ObjectInputStream ois = new ObjectInputStream(fis);
StyledDocument doc = (StyledDocument) ois.readObject();
ois.close();
docTextPane.setStyledDocument(doc);
validate();
} catch (Exception e) {
e.printStackTrace();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息