JavaFX - изменения setStyle () не отображаются - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю приложение JavaFX, и у меня возникают проблемы при изменении цвета фона для определенных компонентов.Для кнопок я могу изменить их радиус фона, но не цвет фона.Для TableView я также не могу изменить цвет фона.

Вот мой код и изображение того, что я вижу.

import javafx.geometry.Pos;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableView;
import javafx.scene.layout.*;
import javafx.stage.Stage;

public class HomeUI extends Application {
    private TableView transactionTable = new TableView();
    private Button importButton = new Button("Import");
    private Button trendButton = new Button("Trends");
    private Button transactionButton = new Button("Transactions");

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

    @Override
    public void start(Stage primaryStage) throws Exception {
        // Set the text of defined fields
        primaryStage.setTitle(" Budget Tracker");
        // Import button information

        // Create Anchor pane
        AnchorPane anchorPane = new AnchorPane();
        anchorPane.setPrefHeight(668.0);
        anchorPane.setPrefWidth(1112.0);
        anchorPane.setStyle("-fx-background-color: #545e75;");

        // VBox to hold all buttons
        VBox vBox = new VBox();
        vBox.setPrefWidth(195);
        vBox.setPrefHeight(668);
        vBox.prefHeight(668);
        vBox.prefWidth(203);
        vBox.setStyle("-fx-background-color: #82a0bc;");
        vBox.setLayoutX(0);
        vBox.setLayoutY(0);
        vBox.setAlignment(Pos.CENTER);

        // importButton settings
        importButton.setMnemonicParsing(false);
        importButton.setPrefWidth(300);
        importButton.setPrefHeight(80);
        importButton.setStyle("-fx-background-color: #cacC9cc");
        importButton.setStyle("-fx-background-radius: 0;");

        // trendButton settings
        trendButton.setPrefWidth(300);
        trendButton.setPrefHeight(80);
        trendButton.setStyle("-fx-background: #bcbdc1");
        trendButton.setStyle("-fx-background-radius: 0");

        // transactionButton settings
        transactionButton.setPrefWidth(300);
        transactionButton.setPrefHeight(80);
        transactionButton.setStyle("-fx-base: #aeacb0");
        transactionButton.setStyle("-fx-background-radius: 0");

        // Add buttons to the vBox
        vBox.getChildren().addAll(importButton, trendButton, transactionButton);

        // TableView settings
        transactionTable.setPrefHeight(568);
        transactionTable.setPrefWidth(694);
        transactionTable.setLayoutX(247);
        transactionTable.setLayoutY(50);
        transactionTable.setStyle("-fx-background-color: CAC9CC;");
        transactionTable.setEditable(false);

        // Add components to anchorPane
        anchorPane.getChildren().addAll(vBox, transactionTable);

        // Add anchorPane to scene and show it
        primaryStage.setScene(new Scene(anchorPane));
        primaryStage.show();
    }
}

enter image description here

1 Ответ

0 голосов
/ 17 ноября 2018

Кнопка

Устанавливая свойство style, вы заменяете старый стиль. Выполнение этого несколько раз не объединяет стили. Вы должны установить значение, которое объединяет правила.

Вместо

transactionButton.setStyle("-fx-base: #aeacb0");
transactionButton.setStyle("-fx-background-radius: 0");

использование

transactionButton.setStyle("-fx-base: #aeacb0; -fx-background-radius: 0;");

TableView

TableView показывает немного своего собственного фона. Большинство цветов, которые вы увидите, это цвет фона TableRow s, которые добавляются как потомки TableView. Для этого вам понадобится таблица стилей CSS (если только вы не хотите использовать rowFactory для стилизации).

.table-view .table-row-cell {
    -fx-background-color: #CAC9CC;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...