【发布时间】:2016-09-15 17:14:07
【问题描述】:
(在 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());
}
}
});
【问题讨论】:
标签: javafx textarea changelistener