读书人

运用Swing实现简易而不简单的文档编辑

发布时间: 2013-10-08 16:46:23 作者: rapoo

使用Swing实现简易而不简单的文档编辑器

本文通过Swing来实现文档简易而不简单的文档编辑器,该文档编辑器的功能包括:

设置字体样式:粗体,斜体,下划线,可扩展设置字体:宋体,黑体,可扩展设置字号:12,14,18,20,30,40, 可扩展设置字体颜色:红色,蓝色,绿色,黄色,黑色,可扩展设置字体背景颜色:淡蓝,淡黄,淡绿,灰色,无色,可扩展插入图片效果如下所示:运用Swing实现简易而不简单的文档编辑器

本文档编辑器使用Swing的JTextPanel来实现,使用JTextPanel可以实现富文档化,包括设置文档字体,颜色等,还可以插入图片和HTML链接,而本编辑器实现的关键是,对于字体样式,颜色,大小和字体使用Java封装好的StyledEditorKit的种种Action然后将这些Action通过addAction添加到下拉框对象即可。StyledEditorKit.BoldAction() 粗体StyledEditorKit.UnderlineAction(); 下划线StyledEditorKit.ItalicAction(); 斜体StyledEditorKit.FontFamilyAction("宋体", "宋体") 宋体tyledEditorKit.FontSizeAction(“12”, 12) 字体大小StyledEditorKit.ForegroundAction("Black",Color.black); 字体颜色除了以上Java封装良好的支持之外,对字体的背景色,插入图片就没有那么好的待遇了,这些实现必须通过其他方式来实现,对于设置字体的背景色,可以通过查看StyledEditorKit.ForgroundAction的源代码,自行写出一个类,可见下面DocBackgroundAction类,但是插入图片就没有那么幸运了,最终采用的方式是使用JTextPanel提供的insertIcon方法来插入图片,但为了和其他方式保持一致性,依然使用Action的方式,具体代码可以参考如下的DocImageAction

public class DocImageAction extends StyledTextAction {private static final long serialVersionUID = 1L;public DocImageAction(String nm, JTextPane panl) {super(nm);this.panl = panl;}public void actionPerformed(ActionEvent e) {JFileChooser f = new JFileChooser(); // 查找文件f.showOpenDialog(null);System.out.println(f.getSelectedFile());ImageIcon icon = createImageIcon(f.getSelectedFile(), "a cute pig");JTextPane editor = this.panl;if (editor != null) {System.out.println("I am in here");StyledDocument doc = getStyledDocument(editor);editor.setCaretPosition(doc.getLength()); // 设置插入位置editor.insertIcon(icon); // 插入图片}}private JTextPane panl;/** Returns an ImageIcon, or null if the path was invalid. */protected static ImageIcon createImageIcon(String path, String description) {java.net.URL imgURL = DocImageAction.class.getResource(path);if (imgURL != null) {return new ImageIcon(imgURL, description);} else {System.err.println("Couldn't find file: " + path);return null;}}}



读书人网 >编程

热点推荐