如何知道用户在 JavaFX TextArea 中选择了哪个文本字符串

Posted

技术标签:

【中文标题】如何知道用户在 JavaFX TextArea 中选择了哪个文本字符串【英文标题】:How to know which text string is selected by user in JavaFX TextArea 【发布时间】:2013-12-21 10:03:47 【问题描述】:

我需要允许用户突出显示文本(用鼠标选择一个范围),然后我想让他们能够通过下拉右键单击菜单将一些设置应用于该文本。

我知道后半部分。但是如何获取从 JavafX 中的文本区域中选择的文本字符串?

另外,我可以对不同的字符串应用不同的样式吗?

【问题讨论】:

我试过这个处理程序,但似乎什么也没做 --------------textArea.addEventHandler(MouseDragEvent.MOUSE_DRAG_RELEASED, new EventHandler() @Override public void handle(MouseDragEvent t) System.out.println("u selected this: "+textArea.getSelectedText()); //要更改生成方法的主体,请选择工具 | 模板。 );跨度> 【参考方案1】:

使用getSelectedText() 获取选定的文本。

第二个问题的答案是肯定的。

getSelectedText() 方法可以像我在这里所做的那样使用:

import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TextAreaDemo extends Application

    @Override
    public void start(Stage stage)
    
        final TextArea textArea = new TextArea("Text Sample");
        textArea.setPrefSize(200, 40);

        textArea.setOnContextMenuRequested(new EventHandler<Event>()
        
            @Override
            public void handle(Event arg0)
            
                System.out.println("selected text:"
                    + textArea.getSelectedText());
            
        );

        VBox vBox = new VBox();
        vBox.getChildren().addAll(textArea);

        stage.setScene(new Scene(vBox, 300, 250));
        stage.show();
    

    public static void main(String[] args)
    
        launch(args);
    

启动此应用程序后,它会显示带有一些文本的TextArea (Text Sample)。我选择了文本的一部分并右键单击。它打印了选定的文本。这符合您的要求吗?

【讨论】:

天啊..我不知道为什么,我只看到了“getSelectedText()”评论。没有显示代码。以上工作!!!!你是我今天的英雄:) :) 很高兴这对您有所帮助。 我今天的最后一个问题(因为您似乎在线!:D)。是否可以将不同的字体样式应用于单个文本区域中的字符串?我读到这是不可能的,或者至少不是直截了当的..(这是我与 Javafx 的第二次战斗)。我正在考虑抓取所有角色并为每个角色分配一种风格......你有什么建议? :) 请将此放在一个单独的问题中。总之,我认为这应该是可行的。 好的!刚刚添加了一个问题。

以上是关于如何知道用户在 JavaFX TextArea 中选择了哪个文本字符串的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX SceneBuilder:如何让textarea填充窗格?

JavaFX TextArea onChange 事件

JavaFX TextArea如何使用自动换行符设置文本

JavaFX TextArea 中的 Tab 键导航

JavaFX:在进入 TextArea 时将插入符号/光标放在 TextArea 的末尾

如何在 JavaFX 中延迟 10 秒在 TextArea 中附加文本?