一、概述
JTextComponent是Swing中所有文本组件的超类。它具有以下几个特性:
1、模型,即Document,管理组件内容;
2、视图
3、控制器,即Editor kit,读或写文本,并提供一些文本编辑的action
4、支持有限的撤销和重复操作
5、光标,光标过滤器和光标导航。
二、关联text action和菜单或按钮
menu.add(getActionByName(DefaultEditorKit.cutAction) //通过文本组件的getActions方法可以获得该组件支持的全部action,并将这些action导入到HashMap中去,以便访问。
action名是从DefaultEditorKit获取的,该类提供了实现基本文本编辑的action,并且是所有的EditorKit的基类。
基于性能方面的考虑,按上述方法得到的action是被程序中文本组件所共享,但有时你并不想这样,可以通过自己实例化一个action实例:
Action action = new StyledEditorKit.BoldAction();
action.putValue(Action.NAME, "Bold");
menu.add(action);
三、关联键盘和text action
InputMap inputMap = textPane.getInputMap();
KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_B,Event.CTRL_MASK);
inputMap.put(key, DefaultEditorKit.backwardAction);
四、实现撤销和重复
分两步走:
(1)记录可撤销的操作,使用UndoManager:protected UndoManager undo = new UndoManager();
在文本组件的document上注册UndoableEditListener,当有操作发生时就会通知该监听器:
doc.addUndoableEditListener(new MyUndoableEditListener());
protected class MyUndoableEditListener
implements UndoableEditListener {
public void undoableEditHappened(UndoableEditEvent e) {
//Remember the edit and update the menus
undo.addEdit(e.getEdit());
undoAction.updateUndoState();
redoAction.updateRedoState();
}
}
(2)实现undo和redo action,并添加到菜单
JMenu menu = new JMenu("Edit");
//Undo and redo are actions of our own creation
undoAction = new UndoAction();
menu.add(undoAction);
redoAction = new RedoAction();
menu.add(redoAction);
UndoAction 和RedoAction都继承自AbstractAction ,具体实现大概如下:
public void actionPerformed(ActionEvent e) {
try {
undo.undo();
} catch (CannotUndoException ex) {
System.out.println("Unable to undo: " + ex);
ex.printStackTrace();
}
updateUndoState();
redoAction.updateRedoState();
}
五、Document
Document将文本组件的内容和表现相分离,该对象至少提供以下服务:1、包含文本组件的内容;2、通过remove 和insertString提供对文本的编辑;3、将
文本的变化通知给document listeners和undoable edit listeners;4、管理位置对象;5、从文本获取信息,比如文本长度等
有以下几种document:PlainDocument DefaultSyledDocument HTMLDocument
六、Document过滤器
StyledDocument styledDoc = textPane.getStyledDocument();
if (styledDoc instanceof AbstractDocument) {
doc = (AbstractDocument)styledDoc;
doc.setDocumentFilter(new DocumentSizeFilter(MAX_CHARACTERS));
}
七、监听Document的变化
doc.addDocumentListener(new MyDocumentListener());
切记,千万不要在DocumentListener中试图改变文本内容,这样会导致死锁,如想改变文本内容,可以使用过滤器。
八、监听光标或选择变化
通过注册光标监听器,可以实时显示光标的位置或选择的范围。textPane.addCaretListener(caretListenerLabel);
当光标发生移动或选择变化,会调用监听器中的caretUpdate方法。
注意该监听器仅能反映光标或选择返回的相关变化或信息,但不能改变光标或选择,如想改变可以使用NavigationFilter。
九、EditorKit
文本组件就是通过EditorKit将不同组件的不同部分整合在一起。其提供了view factory,actions,document,caret。它可以对document
进行读和写。有三种EditorKit:
(1)DefaultEditorKit:对plain document进行读写,提供基本的编辑命令集,是其他EditorKit的超类
(2)StyledEditorKit:对带格式文本进行读写,为格式文本提供了一组action,默认由JTextPane使用
(3)HTMLEditorKit:对HTML进行读写编辑是StyledEditorKit的子类。
以上的三个Editorkit均被注册到JEditorPane中,并与所编辑的文本格式相关联。当读入一个文件时,会根据文件的格式选择相应的Editorkit。
分享到:
相关推荐
二、富文本组件功能特性 2.1 基本样式:支持文本的加粗、斜体、下划线、字体大小和颜色选择。 2.2 链接管理:可以插入内部或外部链接,便于导航和信息传递。 2.3 图像和媒体:允许上传和嵌入图片、视频或其他多媒体...
这个组件具有多端使用的特性,这意味着不仅可以在H5环境中运行,也可以在 Uniapp 支持的其他平台上如小程序等运行。对于开发者来说,这意味着更高效的代码复用和更少的平台适配工作,提高了开发效率和项目的可维护性...
在本文中,我们将深入探讨如何在Vue3框架中...同时,利用Vue3的响应式特性,我们可以轻松地与组件的其他部分进行数据交互,提供更丰富的功能和用户体验。记得在项目中根据实际情况调整路径和配置项,以满足具体需求。
自定义组件是uni-app中的一种核心特性,允许开发者封装复杂或重复使用的功能,提高代码复用性和项目维护性。 二、富文本HTML内容处理 富文本HTML通常包含各种标记语言元素,如图片、链接、样式等,用于创建结构化和...
本视频教程聚焦于Flex4中的文本组件使用,这部分内容对于理解和创建动态、交互式的用户界面至关重要。在Flex4中,文本处理能力得到了显著提升,提供了更丰富的样式和格式化选项。 1. **Text组件基础** - Text组件...
**Tinymce 富文本组件** TinyMCE是一款强大的开源富文本编辑器,它提供了丰富的功能,使得在网页上创建和编辑复杂的HTML内容变得简单易行。TinyMCE以其高度可定制性和良好的跨平台性而受到开发者的青睐,广泛应用于...
"vue 富文本组件 资源 Editor.rar" 提供的可能是一个Vue.js插件或组件,专门用于实现富文本编辑功能。 富文本编辑器组件通常具有以下特性: 1. **富文本格式化**:支持插入文本、图片、链接、列表、表格等,并可以...
Vue的组件化特性使得构建复杂应用变得更加简单。在后台管理系统中,Vue可以用来构建可复用的UI组件,包括富文本编辑器。 KindEditor是一款功能丰富的开源富文本编辑器,支持多种语言,包括HTML、CSS、JavaScript等...
**Vue.js中的文本补全组件:V-Textcomplete** 在前端开发中,用户交互体验是至关重要的,而文本补全功能能显著提升用户体验。V-Textcomplete是一个基于Vue.js框架的插件,它旨在简化在Vue应用中实现智能提示、自动...
总的来说,文本显示组件是构建用户界面不可或缺的部分,而TextView作为Android中最常用的组件之一,其丰富的特性和用法值得深入研究。通过理解和实践TextView的基础使用、链接处理以及样式表的应用,开发者可以更好...
为了实现这一功能,开发者可以使用富文本渲染组件。本文将深入探讨一个专门用于微信小程序的HTML和Markdown格式的富文本渲染组件,该组件还支持代码高亮,极大地提升了用户体验。 首先,我们要了解的是什么是富文本...
1. **组件化开发**:Vue的核心特性之一是组件化,它允许我们将UI拆分成可重用的部分。富文本编辑器作为一个组件,可以独立于应用的其他部分进行开发、测试和维护。 2. **插件安装**:通常,我们会选择一个现成的富...
### 组件特性 - **灵活性**:`wxParse`不仅支持HTML和Markdown,还支持自定义标签解析,可以根据需求扩展。 - **安全性**:通过过滤和转义机制,减少XSS攻击的风险。 - **性能优化**:通过懒加载图片和分段解析大...
【百度小程序富文本解析组件bdParse】是一种专为百度智能小程序设计的富文本解析工具,它的主要功能是将HTML格式的文本转化为百度小程序能够识别和渲染的富文本节点。这个组件是在原有的`wxparse`基础上进行了改造,...
CuteEditer是一款由罗振辉开发的文本编辑组件,专为提高网页或应用程序中的文本编辑体验而设计。它提供了一种用户友好的界面和丰富的功能集,使得开发者能够轻松集成到自己的项目中,为用户提供类似桌面文本编辑器的...
在IT行业中,富文本编辑器是一种常见的网页组件,它允许用户在网页上创建和编辑复杂的文本格式,如字体、颜色、样式、图片和链接等。Layer是一款著名的JavaScript弹层插件,它为开发者提供了丰富的弹出窗口解决方案...
**Swift - 可复用的原生iOS可视化HTML文本编辑器组件** 在iOS应用开发中,为用户提供一个功能丰富的文本编辑器是常见...在实际应用中,结合组件的可定制性和安全性,开发者可以打造出满足特定需求的文本编辑解决方案。
TVText组件的核心特性可能包括以下几点: 1. **竖向文本布局**:不同于传统的横排文本,TVText组件可以将输入的文本按照行为单位垂直堆叠,提供独特的视觉体验。 2. **自定义样式**:可能支持字体、字号、颜色、...
文本组件可以调整字体、大小、颜色和对齐方式;图像组件则支持本地和网络图片加载,并可进行裁剪和拉伸操作。 容器组件则是用于组织和布局其他组件的组件,如盒子布局(Box)、网格布局(Grid)和滚动视图...
富文本框插件是网页开发中常用的一种组件,主要用于提供用户在网页上编辑和格式化文本的功能。在本文中,我们将深入探讨“editor”这个富文本框插件的相关知识点。 一、富文本框概述 富文本框(Rich Text Editor)...