小编use*_*972的帖子

获取'尝试改变通知'例外

我的目标是实现用户写入JTextPane的关键字的蓝色着色.这就是我的代码的样子:

private class DocumentHandler implements DocumentListener {

        @Override
        public void changedUpdate(DocumentEvent ev) {
        }

        @Override
        public void insertUpdate(DocumentEvent ev) {
            highlight();
        }

        @Override
        public void removeUpdate(DocumentEvent ev) {
            highlight();
        }

        private void highlight() {
            String code = codePane.getText();
            SimpleAttributeSet defSet = new SimpleAttributeSet();
            StyleConstants.setForeground(defSet, Color.BLACK);
            doc.setCharacterAttributes(0, code.length(), defSet, true);
            SimpleAttributeSet set = new SimpleAttributeSet();
            StyleConstants.setForeground(set, Color.BLUE);
            for (String keyword : keywords) {
                Pattern pattern = Pattern.compile(keyword + "(\\[\\])*");
                Matcher matcher = pattern.matcher(code);
                while (matcher.find()) {

                    //Just for test
                    System.out.print("Start index: …
Run Code Online (Sandbox Code Playgroud)

java swing jtextpane

10
推荐指数
1
解决办法
1万
查看次数

正则表达式匹配空格或无

我有JTextPane,其中"int"字为蓝色.这样的正则表达式是错误的,因为它也会着色"打印":

int + "(\\[\\])*" //To match eg. int[]
Run Code Online (Sandbox Code Playgroud)

所以我想到了这样的正则表达式:

"\\s" + int + "(\\[\\])*"
Run Code Online (Sandbox Code Playgroud)

没关系,但如果用户在文本窗格中将int作为第一个键入,则无效.如何解决这个问题呢?是否有一些符号为NOTHING?所以我可以做:\ s | 没有

java regex

4
推荐指数
1
解决办法
3664
查看次数

标签 统计

java ×2

jtextpane ×1

regex ×1

swing ×1