Tag: jtextpane

哪个是用于数字和字符串的正确正则表达式?

我正在尝试创建简单的IDE并基于我的JTextPane着色 字符串(“”) 评论(//和/ * * /) 关键词(公共,国际…) 数字(像69这样的整数和1.5之类的浮点数) 我为源代码着色的方法是覆盖StyledDocument中的insertString和removeString方法。 经过大量测试,我已经完成了评论和关键词。 Q1:至于我的Strings着色,我根据这个正则表达式为我的字符串着色: Pattern strings = Pattern.compile(“\”[^\”]*\””); Matcher matcherS = strings.matcher(text); while (matcherS.find()) { setCharacterAttributes(matcherS.start(), matcherS.end() – matcherS.start(), red, false); } 这种方法有99%的时间可以工作,除非我的字符串包含一个特定类型的字符串,其中有一个“\代码内部。这会弄乱我的整个颜色编码。任何人都可以更正我的正则表达式来修复我的错误吗? Q2:对于整数和十进制着色,基于此正则表达式检测数字: Pattern numbers = Pattern.compile(“\\d+”); Matcher matcherN = numbers.matcher(text); while (matcherN.find()) { setCharacterAttributes(matcherN.start(), matcherN.end() – matcherN.start(), magenta, false); } 通过使用正则表达式“\ d +”,我只处理整数而不是浮点数。 此外,作为另一个字符串的一部分的整数是匹配的,这不是我想要的IDE内部。 哪个是用于整数颜色编码的正确表达式? 以下是输出的屏幕截图: […]

限制JTextPane内存使用量

我有一个应用程序,它不断地在套接字上接收数据,然后将这些数据记录到文件中,同时在JTextPane中显示这些数据。 当然,随着数据被写入JTextPane的底层文档,内存使用量继续增加。 是否有一种简单的方法来限制允许使用JTextPane的内存? 我希望JTextPane的工作方式类似于典型命令shell的命令历史记录的工作方式。

如何为用java编写的文本编辑器实现自动完成?

我正在尝试创建一个文本编辑器,比如使用java在mips程序集中进行编码的程序,我混淆了这一点我试图提供像eclipse那样的控制空间function。例如当用户输入时add $s1 ,然后按ctrl + Space,我将替换此字符串: “add $s1 , $s2 , $s3″与他输入的内容! (这是一个例子..我知道add可以是直接类型指令:D),我正在使用hashmap将键击绑定到我的JTextPane中实际发生的内容,如: InputMap inputMap = textPane.getInputMap(); KeyStroke key = KeyStroke.getKeyStroke(‘some keys’) ; inputMap.put(key, ‘some action’) ; 好吧问题是,当我想为我的程序实现Ctrl + Space时,我使用这个: key = KeyStroke.getKeyStroke(Event.CTRL_MASK , KeyEvent.VK_SPACE) ; inputMap.put(key, DefaultEditorKit.insertContentAction); 但是我可以在哪里选择,应该插入什么字符串而不是模式的已经键入的部分? 换句话说,insertContentAction从哪里带来字符串? 我该如何定义应该替换哪些String? 当按下Ctrl + Space时,甚至还有其他更好的替换方法吗? (我要求的是一种将字符串模式插入jTextPane的方法,而不是实现模式匹配的算法) 提前致谢 :)

增加显示HTML文本的JTextPane的字体大小

假设我有一个显示HTML文档的JTextPane。 我想要的是,只需按一下按钮,文档的字体大小就会增加。 不幸的是,这并不像看起来那么容易…… 我找到了一种方法来改变整个文档的字体大小,但这意味着所有文本都设置为我指定的字体大小 。 我想要的是字体大小按照与文档中已有的比例增加。 我是否必须遍历文档中的每个元素,获取字体大小,计算新大小并将其设置回来? 我该怎么办这样的手术? 什么是最好的方法?

突出显示JTextPane中的当前行

我正在尝试超过2天来实现文本编辑器窗口的特定要求…不幸的是到目前为止没有成功:( 目标是获得一个文本编辑器窗口,该窗口将突出显示当前行,就像其他文本编辑器一样。 对于当前行,我指的是当前光标/插入符所在的行。 我已经找到了两种不同的方法,但不幸的是我无法采用它们,所以它们按预期工作。 第一种方法是覆盖DefaultHighlighter ( http://snippets.dzone.com/posts/show/6688 )。 在第二种方法中, HighlighterPainter将被覆盖( http://www.jroller.com/santhosh/date/20050622 )。 现在我正在尝试在我的项目中采用第一种方法,但正如我所说它不能按预期工作。 在这篇文章的最后,我发布了一个小样本应用程序来演示这个问题。 如果我启动程序,则插入符号位于第一行的开头。 但是,该行未突出显示。 现在我输入一些字符。 这些字符将突出显示,但只有那些字符不完整 我点击Enter进入下一行。 第一行不再突出显示正确的内容。 第二行也没有突出显示,这是不正确的。 再次,当我输入一些字符时,那些将被突出但不是完整的行。 当我现在将插入符号移回第一行时,通过向上键或鼠标单击,将突出显示完整的第一行,而不仅仅是现有的字符。 这是我从一开始就想要的行为。 我希望有人能告诉我这里我做错了什么……或者解释为什么根本无法解决这个问题。 如何实现线条突出显示的任何替代解决方案也非常感谢! 非常感谢Cheers Preachie import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Insets; import java.awt.Rectangle; import javax.swing.JFrame; import javax.swing.JTextPane; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.text.DefaultHighlighter; import javax.swing.text.Highlighter; import javax.swing.text.JTextComponent; public class HighlightProblem […]

ColorPane – 可以抓住不同角色的字符串?

我目前正在处理一个给我的旧项目,它目前使用java swing并且有一个基本的gui。 它有一个ColorPane,它扩展了Jtextpane以更改所选文本的颜色。 它使用这种方法 public void changeSelectedColor(Color c) { changeTextAtPosition(c, this.getSelectionStart(), this.getSelectionEnd()); } 假设string =“Hello World!” 你好颜色是绿色世界是黑色的。 我如何从Jtextpane中获取基于其颜色的Hello out。 我尝试了一种笨重的方式,只是存储所选择的单词,因为我改变了颜色,但有没有办法可以一次抓住所有绿色文本? 我试过谷歌搜索但是…它没有真正想出任何好的方法。 谁能指出我正确的方向?

Java JTextPane JScrollPane显示问题

以下类实现了chatGUI。 当它运行正常时,屏幕看起来像这样: 精美的ChatGUI http://img21.imageshack.us/img21/7177/rightchat.jpg 当我输入大长度的文本时,问题经常发生。 50 – 100 chars gui变得疯狂。 聊天记录框缩小,如下所示 图片http://img99.imageshack.us/img99/6962/errorgui.jpg 。 有关导致此问题的任何想法? 谢谢。 PS:下面附带的类是完整的代码。 你可以复制它并在你的计算机上编译,看看我的意思。 注意:一旦GUI发疯,那么如果我点击“清除”按钮,历史窗口将清除,GUI将再次正确显示。 package Sartre.Connect4; import javax.swing.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.text.StyledDocument; import javax.swing.text.Style; import javax.swing.text.StyleConstants; import javax.swing.text.BadLocationException; import java.io.BufferedOutputStream; import javax.swing.text.html.HTMLEditorKit; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.JFileChooser; /** * Chat form class […]

正确的方式使用JTextPane创建Class,JTree,DefaultTreeCellRenderer

我有这个类,以便使用JTree在叶子中显示多种颜色… 该类是TextPaneDefaultTreeCellRenderer import java.awt.*; import java.util.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.tree.*; public class TextPaneDefaultTreeCellRenderer extends DefaultTreeCellRenderer { TextPaneTreeCellRenderer textPaneScrollPane = new TextPaneTreeCellRenderer(); public TextPaneDefaultTreeCellRenderer() { initialize(); } private void initialize() { textPaneScrollPane.setBackgroundNonSelectionColor(getBackgroundNonSelectionColor()); textPaneScrollPane.setBackgroundSelectionColor(getBackgroundSelectionColor()); textPaneScrollPane.setTextNonSelectionColor(getTextNonSelectionColor()); textPaneScrollPane.setTextSelectionColor(getTextSelectionColor()); } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { […]

setCharacterAttributes如何考虑’\ n’和’\ t’?

我正在学校项目中创建一个简单的IDE。 在其中我将整个程序作为单个字符串处理,如… import java.io.*\npublic class A{\n………..\0 追踪所有 /*comments*/ “strings” ‘c’haracters /**Documentation*/ 我正在维护一个ArrayList来标记所有位置。 比如说,如果(23,34)是ArrayList comments一个条目,这意味着23和34之间的字符在注释中。 我使用StyledDocument中定义的setCharacterAttributes实现了这一点。 我的问题是: setCharacterAttributes将\t解释为一个char或多个空格? 它会将行尾( \n )解释为一个位置吗? 如何使用replace参数? (虽然我看过java文档,但我无法弄清楚覆盖的含义)。

无法在JTextPane中删除html内容中的额外行间距

如果我将content-type设置为text/html我无法将Java JTextPane的行拼凑在一起。 当内容类型是text/plain ,我希望它们尽可能地靠近它们,默认情况下。 line-height , top-margin ,… CSS属性似乎没有帮助:(。 这是我的示例程序的输出,它表明当HTML编辑器处理渲染时,这些行确实占用了更多空间: alt text http://lh6.ggpht.com/_Wx4sMDdKKdU/S8cYWIPKhzI/AAAAAAAAAig/4QzFwygmEBs/simpleTextPane.PNG 生成框架的代码是: import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JTextPane; import javax.swing.text.StyleConstants; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; public class DemoSimplestGui extends JFrame { private static final long serialVersionUID = 1L; private static final int WINDOW_WIDTH = 800; private static final int WINDOW_HEIGHT = 130; […]