当前位置: 首页 > 知识库问答 >
问题:

突出显示JavaFx文本区域中的文本

赫连冠玉
2023-03-14

我有一个如下的文本区域,

我需要突出显示或选择所有文本“Highlight me”。我没有找到任何方法来突出显示文本区域中的文本。此外,我在JavaFX中找不到任何其他API可以突出显示特定文本或字母的出现,例如Swing中的JTextArea。有人可以建议我如何在文本区域突出显示字符串吗?或者除了JavaFX中的这个文本区域之外,还有其他API可用吗?

我的代码:

public class FXTextArea extends Application {

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(final Stage primaryStage) {
        Group root = new Group();

        final TextArea textArea = TextAreaBuilder.create().prefWidth(390)
                .wrapText(true).build();

        ScrollPane scrollPane = new ScrollPane();
        scrollPane.getStyleClass().add("noborder-scroll-pane");
        scrollPane.setContent(textArea);
        scrollPane.setFitToWidth(true);
        scrollPane.setPrefWidth(390);
        scrollPane.setPrefHeight(180);

        Button buttonLoad = new Button("Load");
        buttonLoad.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent arg0) {
                FileChooser fileChooser = new FileChooser();

                // Set extension filter
                FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(
                        "TXT files (*.txt)", "*.txt");
                fileChooser.getExtensionFilters().add(extFilter);

                // Show save file dialog
                File file = fileChooser.showOpenDialog(primaryStage);
                if (file != null) {
                    textArea.setText(readFile(file));
                }
                System.out.println(textArea.getText(0, 30));
                textArea.selectRange(0, 30);
            }

        });

        VBox vBox = VBoxBuilder.create().children(buttonLoad, scrollPane)
                .build();

        root.getChildren().add(vBox);
        primaryStage.setScene(new Scene(root, 400, 300));
        primaryStage.show();
    }

    private String readFile(File file) {
        StringBuilder stringBuffer = new StringBuilder();
        BufferedReader bufferedReader = null;

        try {

            bufferedReader = new BufferedReader(new FileReader(file));

            String text;
            while ((text = bufferedReader.readLine()) != null) {
                stringBuffer.append(text);
            }

        } catch (FileNotFoundException ex) {
            Logger.getLogger(FXTextArea.class.getName()).log(Level.SEVERE,
                    null, ex);
        } catch (IOException ex) {
            Logger.getLogger(FXTextArea.class.getName()).log(Level.SEVERE,
                    null, ex);
        } finally {
            try {
                bufferedReader.close();
            } catch (IOException ex) {
                Logger.getLogger(FXTextArea.class.getName()).log(Level.SEVERE,
                        null, ex);
            }
        }

        return stringBuffer.toString();
    }
}

预期输出:

线条应以以下任何颜色高亮显示。“突出显示我”事件应突出显示如下:,

共有1个答案

那鹏
2023-03-14

你可以从这里得到帮助。但限制是您需要使用jdk8。

 类似资料:
  • 问题内容: 我可以高亮显示一些文本,使其从一个值开始,然后从另一个值结束,如下所示,但颜色为黄色吗? “” JTextPane 高亮显示 文本“” 谢谢。 问题答案: 通常,有几种可能性,具体取决于您对“突出显示”的真正含义:-) 通过在文档级别更改任意文本部分的样式属性来突出显示,例如 通过textPane级别上的荧光笔突出显示:

  • 我正在制作一个JavaFX应用程序,在启动时,TextField有默认文本,上面写着“请输入这个值”,用户应该删除该文本并输入一个值。但是,每次单击、拖动和高亮显示所有文本是相当痛苦的。当用户单击文本字段时,是否有一种方法可以自动突出显示所有文本以便于删除,但只有当文本等于默认消息时才可以?我研究了这个,没有找到任何东西,任何帮助都是非常感谢的。

  • 问题内容: 这更多是一个假设性的问题,我正在为正在计划的项目集思广益,并且很好奇是否有人知道任何API或方法可以在任何窗口上立即获取突出显示的文本,例如从浏览器或文字处理器。它还可能有一个只有在按下时才能读取的键盘命令(类似于CTRL + C,将所选文本添加到剪贴板) 我们将非常感谢您对此有什么API的任何了解。 问题答案: 您可以使用JNA 在前台窗口上实际模拟(复制操作),然后读取剪贴板中的内

  • 问题内容: 我遇到的问题是诸如’/’或’!’之类的字符 要么 ‘。’ 显示在左侧。 我只需要从右到左绘制文本,但是使用标准的,西方的,英语从左到右的符号表示文本字符。 如果不手动呈现文本,这可能吗? 问题答案: 我无法产生您的问题,能否请您使用我的SSCCE用于左侧显示。 从代码

  • 问题内容: 我正在尝试突出显示与查询匹配的文本,但是我不知道如何使标记显示为HTML而不是文本。 当前输出: Java 脚本 所需的输出: Java 脚本 问题答案: 这是我简单的twoliner辅助方法: 它返回一个跨度,其中所请求的零件以标签突出显示。如果需要,可以简单地将其修改为使用其他标签。 更新: 为避免唯一键丢失警告,这是一个基于跨度并为匹配的零件设置fontWeight样式的解决方案

  • 我正在使用RichTextFX的StyleClassedTextArea的一个实例,但在突出显示时似乎无法更改文本本身的颜色。 还有一个类似的问题:RichTextFx更改选定的文本颜色和行号背景,这对我很有帮助,但答案只更改实际的突出显示颜色,而不是突出显示时的文本本身。我希望突出显示的文本本身是白色的,以便更具可读性。 另一个问题的答案如下: 我尝试了其他方法来改变文本本身的颜色,例如: 但我