我无法在JavaFX中更改ScrollPane的角色

时间:2014-04-24 19:37:21

标签: java css javafx java-8

我的css代码看起来像这样但它仍然不起作用。滚动窗格?

.scroll-pane:corner > .viewport {

-fx-background-color : #191A19;

}

我的语法是否有问题,或者整个视图端口问题是否允许我编辑

的任何其他方面

2 个答案:

答案 0 :(得分:7)

你的css选择器错了。

.scroll-pane:corner

选择具有类"滚动窗格"的节点它有一个伪类状态"角落"活性。根据{{​​3}},滚动窗格没有"角落"伪类。

.scroll-pane:corner > .viewport

将选择一个带有类" viewport"的节点。它有一个(直接)父节点,类为#34;滚动窗格"并且该父节点具有伪类状态" corner"活性。所以,如果有的话,你会在这里选择视口。

你需要的CSS是

.scroll-pane > .corner {    
    -fx-background-color: #191A19 ;
}

也许看一下关于css选择器的通用教程,例如css documentation

上的那个

更新完整示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ScrollPaneStyledCorner extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();
        ScrollPane scrollPane = new ScrollPane();
        scrollPane.setPrefHeight(200);
        scrollPane.setPrefWidth(200);

        TextArea textArea = new TextArea(System.getProperty("javafx.version"));
        scrollPane.setContent(textArea);
        scrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);
        scrollPane.setHbarPolicy(ScrollBarPolicy.ALWAYS);
        root.setCenter(scrollPane);

        Scene scene = new Scene(root);
        scene.getStylesheets().add(getClass().getResource("scrollPaneCorner.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

scrollPaneCorner.css:

.scroll-pane > .corner {    
    -fx-background-color: #191A19 ;
}

enter image description here

答案 1 :(得分:1)

有效:

.corner {    
    -fx-background-color: #363636 ;
}