1

我在 javafx 文本区域中遇到问题:当我聚焦文本区域时,会应用边框……没关系。

但是当我使用滚动条手柄拖动时,文本区域边框焦点丢失。

见下图:

这是我的简单文本区域:

在此处输入图像描述

像这样聚焦时文本区域发生了变化:

在此处输入图像描述

但是当我使用滚动句柄在文本区域中滚动时,边框会像之前(未聚焦)状态一样更改:

在此处输入图像描述

有什么方法可以控制滚动窗格中的文本区域(在文本区域中)?

4

1 回答 1

0

一种可能的解决方法是不允许将焦点放在 TextArea 中的 ScrollPane 上。即,当 ScrollPane 获得焦点时,我们强制将注意力集中在 TextArea 上。这样,焦点将始终在 TextArea 上。

import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;

public class CustomTextArea extends TextArea {
    private ScrollPane textAreaScrollPane;

    @Override
    protected void layoutChildren() {
        super.layoutChildren();
        if (textAreaScrollPane == null) {
            textAreaScrollPane = (ScrollPane) lookup(".scroll-pane");
            textAreaScrollPane.focusedProperty().addListener((obs, oldVal, focused) -> {
                if (focused) {
                    requestFocus();
                }
            });
        }
    }
}

您将在整个应用程序中使用此 CustomTextArea。

TextArea textArea = new CustomTextArea();
于 2018-12-10T00:07:06.673 回答