我在 javafx 文本区域中遇到问题:当我聚焦文本区域时,会应用边框……没关系。
但是当我使用滚动条手柄拖动时,文本区域边框焦点丢失。
见下图:
这是我的简单文本区域:
像这样聚焦时文本区域发生了变化:
但是当我使用滚动句柄在文本区域中滚动时,边框会像之前(未聚焦)状态一样更改:
有什么方法可以控制滚动窗格中的文本区域(在文本区域中)?
我在 javafx 文本区域中遇到问题:当我聚焦文本区域时,会应用边框……没关系。
但是当我使用滚动条手柄拖动时,文本区域边框焦点丢失。
见下图:
这是我的简单文本区域:
像这样聚焦时文本区域发生了变化:
但是当我使用滚动句柄在文本区域中滚动时,边框会像之前(未聚焦)状态一样更改:
有什么方法可以控制滚动窗格中的文本区域(在文本区域中)?
一种可能的解决方法是不允许将焦点放在 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();