【问题标题】:How to highlight word found using regex in javafx如何突出显示在 javafx 中使用正则表达式找到的单词
【发布时间】:2020-09-16 02:55:47
【问题描述】:

我正在尝试突出显示 Matcher 找到的 JavaFX 中的一个单词,并且每当有新单词时,我都想突出显示该新单词。 这可能吗? 这是我的代码:

                String s1 = displayArea.getText();
                String s2 = textInputArea.getText();
                Pattern p = Pattern.compile("[a-zA-Z]*[^\\s]");            
                Matcher m1 = p.matcher(s1);
                Matcher m2 = p.matcher(s2);
                int counter=0;


                System.out.println("Words from string \"" + s1 + "\" : ");
                while (m1.find() && m2.find() ) {

                    System.out.println("Found words: "+m1.group()+ " Typed words: "+m2.group() );
                    //m1.group() needs to be highlighted and displayed in textarea
                    if (m1.group().equals(m2.group())){
                        counter++;
                        System.out.println("counter:"+counter );

                    }else if (!(m1.group().equals(m2.group())) && typedKey==' '){
                            negativni++;
                            System.out.println("negativni:"+ negativni );

                    }

                }

【问题讨论】:

  • 您是否有要突出显示单词的 TextArea?如果是,您可能想看看这个:stackoverflow.com/questions/9128535/…
  • 这完全取决于“突出显示”的含义以及显示字符串的方式。虽然我不明白第一句话的后半部分。不知道为什么你想用循环做什么。您正在并行遍历两个字符串。也不确定typedKey 是什么;顺便说一句m1.group().equals(m2.group()) 产生false,如果它确实产生false,你不需要再次检查。由于group()的结果没有改变,你应该已经知道结果了...

标签: java regex javafx text textarea


【解决方案1】:

我使用 RichTextFX 解决了它。

displayArea.setStyle(m1.start(),m1.end(),-fx-font-weight:bold;");

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2019-10-31
    • 2017-05-11
    • 1970-01-01
    • 2018-08-03
    相关资源
    最近更新 更多