转自:http://chenghy28.iteye.com/blog/547489
- import javax.swing.text.AttributeSet;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.DefaultStyledDocument;
- import javax.swing.text.MutableAttributeSet;
- import javax.swing.text.StyleConstants;
-
-
-
-
-
- public class CustomizeStyledDocument extends DefaultStyledDocument {
- private int type = -1;
-
- AttributeSet myAttributeSet = null;
-
- public CustomizeStyledDocument(int type) {
- this.type = type;
- }
-
-
-
-
- public void insertString(int offset, String str, AttributeSet a)
- throws BadLocationException {
- this.myAttributeSet = a;
- super.insertString(offset, str, a);
- setSyntaxColor(offset, str.length());
- }
-
-
-
-
- public void remove(int offs, int len) throws BadLocationException {
- super.remove(offs, len);
- setSyntaxColor(offs);
- }
-
-
-
-
- private String getPositionChar(int offset) {
- String str = "";
- try {
- str = getText(offset, 1);
- } catch (BadLocationException ex) {
-
- }
- return str;
- }
-
-
-
-
- private String getBeforeBlankString(int offset) {
- String str = "";
- if (offset < 0)
- return "";
-
- str = getPositionChar(offset);
- if (SyntaxMgr.isSpaceChar(str))
- return "";
-
- String r = getBeforeBlankString(offset - 1);
- return r + str;
- }
-
-
-
-
- private String getAfterBlankString(int offset) {
- String str = "";
- if (offset > getLength())
- return "";
- str = getPositionChar(offset);
- if (SyntaxMgr.isSpaceChar(str))
- return "";
- String r = getAfterBlankString(offset + 1);
- return str + r;
- }
-
-
-
-
- private int setSyntaxColor(int offset) {
- if (offset < 0)
- return offset;
-
- if (myAttributeSet == null)
- return offset;
-
- String ifSyntax = "";
-
- String before = getBeforeBlankString(offset - 1);
- String after = getAfterBlankString(offset);
-
- ifSyntax = (before + after).trim();
-
- int start = offset - before.length();
-
- int tmp_len = ifSyntax.length();
-
- if (start < 0 || tmp_len <= 0)
- return offset;
-
-
- StyleConstants.setForeground((MutableAttributeSet) myAttributeSet,
- SyntaxMgr.isSyntax(type, ifSyntax));
-
- setCharacterAttributes(start, tmp_len, myAttributeSet, true);
-
- return start + tmp_len;
- }
-
-
-
-
- private int setSyntaxColor(int offset, int len) throws
分享到:
相关推荐
在Java Swing库中,`JTextPane`是一个用于显示和编辑富文本的组件,它可以处理包含格式化文本、图片和嵌入对象的文档。在处理大量文本时,我们经常需要实现搜索功能,以便用户能够快速查找特定的关键词或短语。然而...
在Swing中实现语法高亮,通常涉及到以下步骤: 1. **选择合适的文本模型**:JTextPane使用 StyledDocument 模型,它可以对文本的不同部分应用不同的样式,如字体、颜色和背景色,这对于语法高亮至关重要。 2. **...
然而,为了使`JTextPane`能够在图形用户界面中显示出来,我们需要将其添加到一个容器中,如`JFrame`或`JPanel`。下面是一个简单的示例,展示了如何在`JFrame`中初始化和显示`JTextPane`: ```java import java.awt....
在Java Swing库中,`JEditorPane`和`JTextPane`是两个常用的文本组件,它们主要用于显示和编辑富文本内容。在这个特定的程序中,我们看到的是一个演示如何控制这两类组件换行特性的应用。`JEditorPane`通常用于显示...
在给定的标题“JTextPane 关键字变色”和描述“SWT JTextPane 可以把控件中需要的字符串的颜色修改成自己想要的颜色”中,我们关注的主要知识点是`JTextPane`如何实现特定关键字的高亮显示,也就是改变颜色。...
JTextPane使用,可以传图片,文字等
1. **创建`JTextPane`实例**:首先,你需要创建一个`JTextPane`对象,将其添加到容器(如`JFrame`)中,以便在窗口中显示。 ```java JTextPane textPane = new JTextPane(); JFrame frame = new JFrame("JTextPane...
课程设计期间做的Java的桌面端小程序,可以发送Emoji表情的聊天室,另外在文件夹中放置了自己的关键代码部分解析,关于emoji部分可查看笔者博客...
NULL 博文链接:https://icarusliu.iteye.com/blog/2098986
在Java的Swing库中,`JEditorPane`和`JTextPane`是两种非常重要的文本组件,它们允许用户编辑和显示富文本内容,包括不同的字体、颜色、字号、样式等。这两个组件都是`javax.swing.text`包的一部分,提供了丰富的...
开发者可能会使用`JTextPane`或`JEditorPane`组件来实现代码编辑功能,并结合正则表达式来匹配并高亮显示Java关键字。 另外,Java记事本中的高亮显示可能涉及到颜色样式和字体设置。在Java中,可以通过设置`...
在JTextPane中,我们可以创建和应用Style对象来定义文本的样式,如字体、颜色、下划线等。Style对象由StyleContext管理,StyleContext是一个全局的样式存储库。 4. ** 设置颜色和字体**: 通过调用`setAttributes...
这涉及到处理图像数据,将其转换为适合在文本中显示的格式,并且在保存文档时能够正确地保存和恢复图片的位置和数据。 5. **文件处理**:项目可能包含了对文件I/O的操作,如读取和写入文本文件。在Java中,这通常...
文本编辑器的一个重要特性就是能够高亮显示代码中的关键字,这有助于提高代码可读性和编写效率。在Java中,可以利用`StyledDocument`类结合`CharacterAttributeSet`来实现这一功能。例如: ```java StyledDocument ...
这个任务旨在让学生理解如何利用Java语言构建一个具备基本文本编辑功能的图形用户界面(GUI),同时引入语法高亮显示,以增强代码的可读性。 一、需求分析 1. 打开已有文件:编辑器应能加载和显示已有的Java源代码...
6. **插入多媒体**: 如何通过HTML插入图片或嵌入视频,以及如何在JTextPane中实现这些功能。 7. **编程实践**: 创建和运行Java Swing应用的基本步骤,包括导入库、定义组件、布局管理、事件处理等。 总的来说,...