我正在使用HiddenSidesPane在需要时显示和隐藏滚动条。当我将鼠标移到ScrollPane的边缘时,滚动条出现;当我移回时,滚动条隐藏。但是,当检测到滚动时,我在显示滚动条时遇到问题。您可以在下面找到我的代码:
FXML:
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.VBox?>
<?import org.controlsfx.control.HiddenSidesPane?>
<?import java.net.URL?>
<ScrollPane xmlns:fx="http://javafx.com/fxml"
fx:controller="hypermap.components.featurespanel.view.properties.PropertiesTab" fx:id="propertyTabRoot"
fitToWidth="true" hbarPolicy="NEVER" vbarPolicy="NEVER">
<stylesheets>
<URL value="@Scrollbar.css"/>
</stylesheets>
<HiddenSidesPane fx:id="hiddenSidesPane" minWidth="280">
<content>
<VBox fx:id="vboxInsideScroll">
<VBox fx:id="groupsContainer"/>
<VBox fx:id="messageContainer"/>
</VBox>
</content>
</HiddenSidesPane>
</ScrollPane>
CSS文件:
.scroll-pane{
-fx-focus-color: none;
-fx-background-color: transparent;
}
.scroll-bar > .increment-button, .decrement-button, .increment-arrow, .decrement-arrow{
-fx-pref-height: 0;
}
.scroll-bar:vertical{
-fx-background-color: transparent;
-fx-border-color: transparent;
-fx-pref-width: 10;
-fx-padding: 0;
}
.scroll-bar:vertical .thumb{
-fx-background-color: color-dark-slate;
-fx-border-radius: 100;
-fx-padding: 0 4 0 0;
-fx-opacity: 0.2
}
.scroll-bar:vertical .track{
-fx-background-color: transparent;
}
具有使用HiddenSidesPane方法的控制器文件:
@FXML
private VBox groupsContainer;
@FXML
private VBox messageContainer;
@FXML
private ScrollPane propertyTabRoot;
@FXML
private HiddenSidesPane hiddenSidesPane;
private void makeScrollable(ScrollPane scrollPane) {
final Node scrollbar = scrollPane.lookup(".scroll-bar:vertical");
hiddenSidesPane.setRight(scrollbar);
hiddenSidesPane.setTriggerDistance(40);
hiddenSidesPane.setAnimationDuration(Duration.millis(500));
scrollPane.setOnScroll((event -> {
hiddenSidesPane.setRight(scrollbar);
event.consume();
}));
我将非常感谢您的帮助。而且,我不知道为什么滚动条的拇指总是一直都高,即使内容太大而应该变小也是如此。 谢谢!