首先,正如您可能在标签中注意到的那样,我使用 RichTextFX。CodeArea 只是它的文本区域,具有一些功能。
我有ScrollPane
内部元素:
ScrollPane
| AnchorPane
| | VBox
| | | HBox
| | | | Label
| | | | CodeArea
| | | HBox
| | | | Label
| | | | CodeArea
| | | HBox
| | | | Label
| | | | CodeArea
...........................
当我在光标未悬停时尝试滚动时CodeArea
,ScrollPane
应该像滚动一样滚动。
但是,如果我的光标在 上CodeArea
,如我所料,它会尝试滚动CodeArea
,即使没有可滚动的内容(内容很合适)。
ScrollEvent
不是ScrollPane
,AnchorPane
也 不是CodeArea
, 但是VBox
.
我试图绑定像scrollPane.onScrollProperty().bind(vBox.onScrollProperty())
orscrollPane.onScrollProperty().bind(codeArea.onScrollProperty())
和许多其他的属性,但没有奏效。
这个问题不影响 classic TextArea
。
如何在悬停时ScrollPane
滚动而不是滚动?CodeArea
CodeArea
您还可以使用此示例重现该问题:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.control.ScrollPane;
import org.fxmisc.richtext.CodeArea;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
ScrollPane scrollPane = new ScrollPane();
VBox vBox = new VBox();
scrollPane.setContent(vBox);
CodeArea codeArea = new CodeArea();
codeArea.setPrefHeight(2000);
Label label = new Label("Can you scroll here while hovering code area?");
vBox.getChildren().addAll(codeArea, label);
for (int i = 0; i < 256; i++) {
codeArea.appendText("Sample text\n");
}
Scene scene = new Scene(scrollPane, 400, 400);
stage.setScene(scene);
stage.show();
}
}