JavaFX:当Tabed到TextArea时,将插入/光标放在TextArea的末尾
发布时间:2020-12-15 04:34:20 所属栏目:Java 来源:网络整理
导读:(在stackoverflow上搜索,我看到这个问题针对 Javascript而不是针对JavaFX) 我有一个TextArea实际上是类似文字处理器的应用程序中的主要文本编辑器(即,我打算让用户花费大量时间在这个TextArea中工作).当用户选中TextArea时,我希望将光标放在TextArea的末尾,
(在stackoverflow上搜索,我看到这个问题针对
Javascript而不是针对JavaFX)
我有一个TextArea实际上是类似文字处理器的应用程序中的主要文本编辑器(即,我打算让用户花费大量时间在这个TextArea中工作).当用户选中TextArea时,我希望将光标放在TextArea的末尾,以便用户可以从他们上次输入的内容结束时继续编辑. 我使用ChangeListener(下面的代码)实现了它,它具有所需的行为.但是,由于每次获得焦点时光标都放在TextArea的末尾,那么如果我要切换应用程序然后切换回来,光标就会移动.例如,如果用户在TextArea的中间某处键入句子,切换到阅读电子邮件,然后切换回以找到他们的光标已移动,则这是不方便的. 是否有一个焦点遍历策略执行此操作或以其他方式实现此操作,以便仅当用户选中TextArea时光标才会移动到末尾?在我看来,这通常是所希望的行为:每当TextArea被选中时,光标总是出现在TextArea的末尾,但是否则光标保持不动. TextArea passageTextArea; passageTextArea.focusedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable,Boolean oldValue,Boolean newValue) { if (newValue.booleanValue()) { passageTextArea.positionCaret(passageTextArea.getText().length()); } } }); 解决方法
您可以为KeyEvent添加一个EventHandler,当您按Tab键时,它会将插入符号移动到文本的末尾:
EventHandler<KeyEvent> tabListener = evt -> { if (evt.getCode() == KeyCode.TAB && !evt.isShiftDown()) { evt.consume(); passageTextArea.requestFocus(); passageTextArea.end(); } }; node.addEventHandler(KeyEvent.ANY,tabListener); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java判断图片格式的代码
- java – Robolectric启动时反射的NullPointerException –
- java自加和自减运算过程
- java – 使用MessagePack与Android
- javafx-2 – JavaFX,如何冻结TableView中某些列的位置
- java – guava-libraries:Objects.hashCode(Object [])碰撞
- 在Java第4版中思考 – 什么是classname.this.method()
- java – Spring-Boot:同时处理多个请求
- 为什么Java forkbomb不会导致StackOverflowError?
- 如何检查字符既不是Java中的字母也不是数字?