`
joyo_fly
  • 浏览: 87814 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

文本组件的特性

阅读更多

一、概述

    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。

 

 

 

分享到:
评论

相关推荐

    mendix富文本组件

    二、富文本组件功能特性 2.1 基本样式:支持文本的加粗、斜体、下划线、字体大小和颜色选择。 2.2 链接管理:可以插入内部或外部链接,便于导航和信息传递。 2.3 图像和媒体:允许上传和嵌入图片、视频或其他多媒体...

    Uniapp 多功能富文本编辑组件 可多端使用 H5插入

    这个组件具有多端使用的特性,这意味着不仅可以在H5环境中运行,也可以在 Uniapp 支持的其他平台上如小程序等运行。对于开发者来说,这意味着更高效的代码复用和更少的平台适配工作,提高了开发效率和项目的可维护性...

    Vue3富文本编辑器组件封装

    在本文中,我们将深入探讨如何在Vue3框架中...同时,利用Vue3的响应式特性,我们可以轻松地与组件的其他部分进行数据交互,提供更丰富的功能和用户体验。记得在项目中根据实际情况调整路径和配置项,以满足具体需求。

    uni-app 自定义组件展示html富文本内容,可实现富文本html内容中 图片展示、视频播放、音频播放。

    自定义组件是uni-app中的一种核心特性,允许开发者封装复杂或重复使用的功能,提高代码复用性和项目维护性。 二、富文本HTML内容处理 富文本HTML通常包含各种标记语言元素,如图片、链接、样式等,用于创建结构化和...

    Flex4视频教程_03-02使用文本组件.rar

    本视频教程聚焦于Flex4中的文本组件使用,这部分内容对于理解和创建动态、交互式的用户界面至关重要。在Flex4中,文本处理能力得到了显著提升,提供了更丰富的样式和格式化选项。 1. **Text组件基础** - Text组件...

    tinymce 富文本组件

    **Tinymce 富文本组件** TinyMCE是一款强大的开源富文本编辑器,它提供了丰富的功能,使得在网页上创建和编辑复杂的HTML内容变得简单易行。TinyMCE以其高度可定制性和良好的跨平台性而受到开发者的青睐,广泛应用于...

    vue 富文本组件 资源 Editor.rar

    "vue 富文本组件 资源 Editor.rar" 提供的可能是一个Vue.js插件或组件,专门用于实现富文本编辑功能。 富文本编辑器组件通常具有以下特性: 1. **富文本格式化**:支持插入文本、图片、链接、列表、表格等,并可以...

    vue后台管理系统富文本组件(二)kindeditor

    Vue的组件化特性使得构建复杂应用变得更加简单。在后台管理系统中,Vue可以用来构建可复用的UI组件,包括富文本编辑器。 KindEditor是一款功能丰富的开源富文本编辑器,支持多种语言,包括HTML、CSS、JavaScript等...

    VTextcomplete一个使用Vuejs实现易于使用的文本完整组件

    **Vue.js中的文本补全组件:V-Textcomplete** 在前端开发中,用户交互体验是至关重要的,而文本补全功能能显著提升用户体验。V-Textcomplete是一个基于Vue.js框架的插件,它旨在简化在Vue应用中实现智能提示、自动...

    文本显示组件

    总的来说,文本显示组件是构建用户界面不可或缺的部分,而TextView作为Android中最常用的组件之一,其丰富的特性和用法值得深入研究。通过理解和实践TextView的基础使用、链接处理以及样式表的应用,开发者可以更好...

    用于微信小程序的HTML和Markdown格式的富文本渲染组件支持代码高亮

    为了实现这一功能,开发者可以使用富文本渲染组件。本文将深入探讨一个专门用于微信小程序的HTML和Markdown格式的富文本渲染组件,该组件还支持代码高亮,极大地提升了用户体验。 首先,我们要了解的是什么是富文本...

    富文本编辑器组件(vue).zip

    1. **组件化开发**:Vue的核心特性之一是组件化,它允许我们将UI拆分成可重用的部分。富文本编辑器作为一个组件,可以独立于应用的其他部分进行开发、测试和维护。 2. **插件安装**:通常,我们会选择一个现成的富...

    wxParse 微信小程序富文本解析自定义组件,支持HTML及markdown解析

    ### 组件特性 - **灵活性**:`wxParse`不仅支持HTML和Markdown,还支持自定义标签解析,可以根据需求扩展。 - **安全性**:通过过滤和转义机制,减少XSS攻击的风险。 - **性能优化**:通过懒加载图片和分段解析大...

    百度小程序富文本解析组件bdparse

    【百度小程序富文本解析组件bdParse】是一种专为百度智能小程序设计的富文本解析工具,它的主要功能是将HTML格式的文本转化为百度小程序能够识别和渲染的富文本节点。这个组件是在原有的`wxparse`基础上进行了改造,...

    [罗振辉]CuteEditer不错的文本编辑组件

    CuteEditer是一款由罗振辉开发的文本编辑组件,专为提高网页或应用程序中的文本编辑体验而设计。它提供了一种用户友好的界面和丰富的功能集,使得开发者能够轻松集成到自己的项目中,为用户提供类似桌面文本编辑器的...

    layer富文本域demo

    在IT行业中,富文本编辑器是一种常见的网页组件,它允许用户在网页上创建和编辑复杂的文本格式,如字体、颜色、样式、图片和链接等。Layer是一款著名的JavaScript弹层插件,它为开发者提供了丰富的弹出窗口解决方案...

    swift-一个可复用的原生iOS可视化HTML文本编辑器组件

    **Swift - 可复用的原生iOS可视化HTML文本编辑器组件** 在iOS应用开发中,为用户提供一个功能丰富的文本编辑器是常见...在实际应用中,结合组件的可定制性和安全性,开发者可以打造出满足特定需求的文本编辑解决方案。

    TVText 011 (竖着显示文本的组件)

    TVText组件的核心特性可能包括以下几点: 1. **竖向文本布局**:不同于传统的横排文本,TVText组件可以将输入的文本按照行为单位垂直堆叠,提供独特的视觉体验。 2. **自定义样式**:可能支持字体、字号、颜色、...

    ArkUI组件库示例App 包括基础组件、容器组件、弹窗组件,可以在预览器或真机中,实时预览组件接口、属性调整的效果

    文本组件可以调整字体、大小、颜色和对齐方式;图像组件则支持本地和网络图片加载,并可进行裁剪和拉伸操作。 容器组件则是用于组织和布局其他组件的组件,如盒子布局(Box)、网格布局(Grid)和滚动视图...

    富文本框插件

    富文本框插件是网页开发中常用的一种组件,主要用于提供用户在网页上编辑和格式化文本的功能。在本文中,我们将深入探讨“editor”这个富文本框插件的相关知识点。 一、富文本框概述 富文本框(Rich Text Editor)...

Global site tag (gtag.js) - Google Analytics