這是來自 css 檔案的代碼:
.scroll-bar .button
{
visibility: hidden;
-fx-background-color: black;
}
但它對滾動條按鈕沒有影響:

請給我一個提示如何解決這個問題
uj5u.com熱心網友回復:
我想出了一些似乎可以做你想做的事情。我絕對不保證它會繼續適用于以后的 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); }
}
uj5u.com熱心網友回復:
我在 JavaFX 背景關系選單上看到了一個用于洗掉滾動箭頭的解決方案,也許這會有所幫助:
.context-menu .scroll-arrow {
-fx-padding: 0 0 0 0;
}
.context-menu .menu-item {
-fx-border-style: solid;
-fx-border-color: transparent;
}
來源:https : //gist.github.com/oowekyala/ccc67aa8663e788c072d3824b1c3d22a
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/396747.html
上一篇:為什么我的Rust程式運行速度比Java等價程式慢兩倍多?
下一篇:你如何處理物件的異步初始化?
