如何禁用 TextArea (JavaFX) 中的文本选择?

     2023-03-06     138

关键词:

【中文标题】如何禁用 TextArea (JavaFX) 中的文本选择?【英文标题】:How to disable text selection in TextArea (JavaFX)? 【发布时间】:2020-08-23 04:36:57 【问题描述】:

我想禁用用户在 JavaFX 的 textArea 中选择文本的功能。如何做到这一点?

【问题讨论】:

【参考方案1】:

这可能有点违反直觉,但这样做的方法是使用TextFormatter。传递给文本格式化程序的Change 包括当前插入符号位置和锚点位置(以及任何更改都会导致更改被转发到文本格式化程序,并可能被文本格式化程序否决或修改)。通过设置锚点使其与插入符号位置相同,您可以确保没有选择任何内容:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextFormatter;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class DisableTextSelection extends Application 

    @Override
    public void start(Stage primaryStage) throws Exception 
        TextArea textArea = new TextArea();
        textArea.setTextFormatter(new TextFormatter<String>(change ->  
            change.setAnchor(change.getCaretPosition());
            return change ;
        ));

        BorderPane root = new BorderPane(textArea);
        Scene scene = new Scene(root, 400, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    

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


【讨论】:

谢谢。这会禁用文本选择突出显示,但是当我将鼠标移到光标上时,光标仍然看起来像文本选择光标。有没有办法安排呢? @chaim770 我认为您可以使用 CSS 更改光标,就像任何其他控件一样,或者只是做textArea.setCursor(Cursor.DEFAULT); 使用 CSS:你必须将光标设置在文本区域的内容上,即.text-area .content -fx-cursor: default ; 。不过,我可能不建议将其作为良好的用户体验,因为文本光标会提示用户可以在文本区域中键入,而不是提示他们可以选择文本。

javafx:如何滚动到textarea中的特定行

packagesample;importjavafx.application.Application;importjavafx.scene.Scene;importjavafx.scene.control.TextArea;importjavafx.stage.Stage;importjava.util.stream.IntStream;publicclassMainextendsApplicat 查看详情

JavaFX TextArea 中的 Tab 键导航

】JavaFXTextArea中的Tab键导航【英文标题】:TabkeynavigationinJavaFXTextArea【发布时间】:2012-10-0308:27:26【问题描述】:如何让TextArea中的Tab键导航到下一个控件?我可以为按键按下事件添加一个侦听器,但是如何使TextArea控件失去焦点... 查看详情

javafx-如何从textarea隐藏滚动条?

...在编写一个聊天系统并且具有核心功能,但是当聊天填满textarea时,滚动条会出现以便进一步向下腾出空间但是我似乎无法找到隐藏滚动条的方法而不会完全消除它。否则,如果可以只改变不透明度,使其不太明显而不改变聊天... 查看详情

如何限制 chrome 中的最大 textarea 宽度和高度或如何禁用 textarea 调整大小

】如何限制chrome中的最大textarea宽度和高度或如何禁用textarea调整大小【英文标题】:Howtorestrictmaxtextareawidthandheightinchromeorhowtodisabletextarearesizing【发布时间】:2011-11-0411:56:26【问题描述】:Chrome允许通过在右下角使用药物来调整... 查看详情

“textarea”中的 JavaFX 8 计数行

】“textarea”中的JavaFX8计数行【英文标题】:JavaFX8countrowsin"textarea"【发布时间】:2020-01-3003:45:29【问题描述】:我们正在尝试计算TextArea中的行数这是TextArea属性PrefWidth600和PrefHeight620和MaxHeight620WrapText设置为true。我们将Ja... 查看详情

Javafx 8 替换 textarea 中的文本并保持格式

】Javafx8替换textarea中的文本并保持格式【英文标题】:Javafx8replacetextintextareaandmaintainformatting【发布时间】:2020-03-2309:15:25【问题描述】:我们正在尝试替换TextArea中拼写错误的单词,当单词位于文本行的末尾并且有回车时,进程... 查看详情

如何在 setText 之后滚动 JavaFX TextArea

】如何在setText之后滚动JavaFXTextArea【英文标题】:HowtoscrollJavaFXTextAreaaftersetText【发布时间】:2013-10-0722:13:06【问题描述】:我正在使用JavaFX,我想在我先设置textarea的文本后,将textarea从顶部滚动到某个位置。我尝试先在我的text... 查看详情

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

】如何知道用户在JavaFXTextArea中选择了哪个文本字符串【英文标题】:HowtoknowwhichtextstringisselectedbyuserinJavaFXTextArea【发布时间】:2013-12-2110:03:47【问题描述】:我需要允许用户突出显示文本(用鼠标选择一个范围),然后我想让... 查看详情

Javafx 不接受文本字段的 textArea 中的其他字体或语言

】Javafx不接受文本字段的textArea中的其他字体或语言【英文标题】:JavafxdoesnotacceptotherfontsorlanguagesintextAreaofTextField【发布时间】:2020-11-3006:37:47【问题描述】:importjavafx.application.Application;importjavafx.scene.Scene;importjavafx.scene.layout. 查看详情

如何在可编辑的 TextArea 中禁用回车?

】如何在可编辑的TextArea中禁用回车?【英文标题】:HowcanIdisablecarriagereturnswithinaneditableTextArea?【发布时间】:2011-10-1807:49:00【问题描述】:我只是想阻止用户在TextArea中输入回车。我一直在试验TextArea中的“限制”属性,但似乎... 查看详情

JavaFX TextArea:如何设置制表宽度

】JavaFXTextArea:如何设置制表宽度【英文标题】:JavaFXTextArea:howtosettabulationwidth【发布时间】:2012-11-2605:52:51【问题描述】:如何设置JavaFXTextArea的标签宽度?当我在TextArea中使用制表(制表键)时,制表的宽度很宽。我想控制宽... 查看详情

将 System.out 重定向到 JavaFX 中的 TextArea

】将System.out重定向到JavaFX中的TextArea【英文标题】:RedirectingSystem.outtoaTextAreainJavaFX【发布时间】:2012-11-3006:46:56【问题描述】:更新:仍然有同样的问题,修改了主应用代码的源代码:http://pastebin.com/fLCwuMVqCoreTest中一定有一些... 查看详情

将 SLF4J 日志重定向到 JavaFX 中的 TextArea

】将SLF4J日志重定向到JavaFX中的TextArea【英文标题】:RedirectingSLF4JlogtoTextAreainJavaFX【发布时间】:2017-01-0722:28:26【问题描述】:我想在JavaFX的TextArea中显示SLF4J记录的错误。到目前为止,我在logback-test.xml中有一个appender:<appender... 查看详情

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

】如何在JavaFX中延迟10秒在TextArea中附加文本?【英文标题】:HowtoappendtextinaTextAreabydelayof10secondsinJavaFX?【发布时间】:2019-06-0705:21:41【问题描述】:我有这个将数据粘贴到TextArea的函数,我想在DisplayChain的每次迭代中附加文本,1... 查看详情

JavaFX TextArea 字符串读取问题

】JavaFXTextArea字符串读取问题【英文标题】:JavaFXTextAreastringreadingissue【发布时间】:2020-05-1716:31:09【问题描述】:我正在尝试在JavaFX中创建一个登录系统,我需要检查与电子邮件对应的textArea的字符串是否与我的User类中的电子... 查看详情

JavaFX - 限制 TextArea 行?

】JavaFX-限制TextArea行?【英文标题】:JavaFX-LimitTextArearows?【发布时间】:2015-09-2011:55:31【问题描述】:在Swing中,我创建了一个自定义Document,它能够确定和限制TextArea中的行数,无论是换行还是按下换行符。我希望在FX中找到类... 查看详情

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

】JavaFXTextArea如何使用自动换行符设置文本【英文标题】:JavaFXTextAreahowtosettextwithautomaticnewlinebreaks【发布时间】:2016-06-1806:33:42【问题描述】:在我的应用程序中,我使用了两个Tabs。在第一个中我放置了一个HtmlEditor,在第二个... 查看详情

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

】JavaFX:在进入TextArea时将插入符号/光标放在TextArea的末尾【英文标题】:JavaFX:Placecaret/cursoratendofTextAreawhentabbingintoTextArea【发布时间】:2016-09-1517:14:07【问题描述】:(在***上搜索,我看到这个问题针对Javascript而不是针对JavaFX... 查看详情