首页 > 解决方案 > JavaFX css 不适用于 TabPane

问题描述

我试图改变 TabPane 对象的样式。我加载了css,我可以将样式应用于.root,但它不适用于TabPane。我从默认 css 中复制了 css 代码,并随机更改了结果为零的内容。我还从其他类似问题的答案中复制了大量代码,人们说它对他们有用,结果为零。

我不知道可能是什么原因。

public class App extends Application {

private MainWindow mainWindow;

@Override
public void start(Stage primaryStage) {
    mainWindow = new MainWindow();
    primaryStage = mainWindow;
    primaryStage.show();
}

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

public class MainWindow extends Stage {

public String windowTitle = "Test";
private Scene mainScene;
private final StackPane container = new StackPane();
private final TabPane tabMenu = new TabPane();

private final TabSkelet patchTab = new TabSkelet("Test", "testView.html");
private final Tab[] tabs = {patchTab};

public MainWindow() {
    cunstructWindow();
}

private void cunstructWindow() {
    addTabs(tabs);
    container.getChildren().add(tabMenu);
    mainScene = new Scene(container, 1000, 600);
    mainScene.getStylesheets().add(getClass().getResource("style.css").toString());
    setScene(mainScene);
    setTitle(windowTitle);
}

private void addTabs(Tab[] tabs) {
    for (Tab tab : tabs) {
        tabMenu.getTabs().add(tab);
    }
}

public class TabSkelet extends Tab {

private final WebView view = new WebView();
private final WebEngine webInterface;
private final StackPane tabBody = new StackPane();

public TabSkelet(String tabTitle, String htmlFileName) {
    setText(tabTitle);
    setProperties();
    webInterface = view.getEngine();
    tabBody.getChildren().add(view);
    setContent(tabBody);
    webInterface.load(getClass().getResource(htmlFileName).toString());
}

private void setProperties() {
    setClosable(false);
}

我的 CSS 文件:

.root {
-fx-background-color: #333337;
}

.tab-header-background {
-fx-background-color: green ;
}

标签: javacssjavafxstyling

解决方案


推荐阅读