这是 css 文件中的代码:
.scroll-bar .button
{
visibility: hidden;
-fx-background-color: black;
}
Run Code Online (Sandbox Code Playgroud)
请给我一个提示如何解决这个问题
我想出了一些似乎可以做你想做的事情。我绝对不保证它将继续适用于更高版本的 JavaFX。
我所做的是查看默认的摩德纳样式表。然后尝试删除与滚动条按钮相关的所有填充和插图,有效地使它们不可见,并对滚动条应用首选尺寸(因为它们基于按钮的首选尺寸)。
可能有更有效的方法来处理这个问题并隐藏事物。也许可以用更少的规则来完成,但无论如何,这就是我想出的,而且它似乎有效。
另外,如果您将滚动窗格设置得非常小,则默认功能是隐藏拇指并仅允许通过按钮在滚动窗格中移动。在您的情况下,按钮不存在,因此不要让滚动窗格变得太小,否则您会失去滚动窗格的平移功能。
无论如何,这是一些示例代码:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class NoButtonScroll extends Application {
private static final Lorem lorem = new Lorem();
private static final String NO_BUTTON_SCROLL_BARS = """
data:text/css,
.scroll-bar:vertical {
-fx-pref-width: 1.12em;
}
.scroll-bar:horizontal {
-fx-pref-height: 1.12em;
}
.scroll-pane > .scroll-bar:horizontal > .increment-button,
.scroll-pane > .scroll-bar:horizontal > .decrement-button {
-fx-padding: 0 0 0 0;
}
.scroll-pane > .scroll-bar:vertical > .increment-button,
.scroll-pane > .scroll-bar:vertical > .decrement-button {
-fx-padding: 0 0 0 0;
}
.scroll-bar > .increment-button,
.scroll-bar > .decrement-button {
-fx-padding: 0 0 0 0;
}
.scroll-bar:horizontal > .increment-button,
.scroll-bar:horizontal > .decrement-button {
-fx-background-insets: 0 0 0 0 , 0 0 0 0, 0 0 0 0, 0 0 0 0 0;
}
.scroll-bar:vertical > .increment-button,
.scroll-bar:vertical > .decrement-button {
-fx-background-insets: 0 0 0 0, 0 0 0 0, 0 0 0 0;
}
.scroll-bar:horizontal > .decrement-button > .decrement-arrow {
-fx-padding: 0 0 0 0;
}
.scroll-bar:horizontal > .increment-button > .increment-arrow {
-fx-padding: 0 0 0 0;
}
.scroll-bar:vertical > .decrement-button > .decrement-arrow {
-fx-padding: 0 0 0 0;
}
.scroll-bar:vertical > .increment-button > .increment-arrow {
-fx-padding: 0 0 0 0;
}
""";
@Override public void start(Stage stage) {
ScrollPane standardScrollPane = new ScrollPane(generateText());
ScrollPane noButtonScrollPane = new ScrollPane(generateText());
noButtonScrollPane.getStylesheets().add(NO_BUTTON_SCROLL_BARS);
final VBox layout = new VBox(10, standardScrollPane, noButtonScrollPane);
layout.setPadding(new Insets(10));
layout.setPrefSize(600, 400);
stage.setScene(new Scene(layout));
stage.show();
}
private Text generateText() {
Text sampleText = new Text(lorem.nextText(500));
sampleText.setWrappingWidth(800);
return sampleText;
}
// class for generating example text for test data, not integral to the solution.
private static final class Lorem {
private static final String[] lorem = "lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua".split(" ");
private int idx = 0;
public String nextWord() {
return lorem[getAndIncrementIdx()];
}
public String nextText(int nWords) {
return IntStream.range(0, nWords)
.mapToObj(i -> nextWord())
.collect(Collectors.joining(" "));
}
private int getAndIncrementIdx() {
int retVal = idx;
idx = (idx + 1) % lorem.length;
return retVal;
}
}
public static void main(String[] args) { launch(args); }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |