Установка фоновых изображений программно - PullRequest
0 голосов
/ 20 января 2020

Аналогично Как удалить фон диалога?

Пример кода

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.image.Image;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundImage;
import javafx.scene.layout.BackgroundSize;
import javafx.scene.layout.TilePane;
import javafx.stage.Stage;

public class BackgroundImageTest extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        var toggleButton = new ToggleButton();
        var texture = new Image(BackgroundImageTest.class.getResourceAsStream("desert.jpg"));
        var bckSize = new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, false, false, false, true);
        toggleButton.setBackground(new Background(new BackgroundImage(texture, null , null, null, bckSize)));
        toggleButton.setPrefHeight(40);
        toggleButton.setPrefWidth(40);
//      toggleButton.setStyle("-fx-background-size: cover;" + "-fx-background-image: url('desert.jpg');");

        var pane = new TilePane(toggleButton);

        var scene = new Scene(pane);
        stage.setScene(scene);
        stage.show();
    }

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

Этот код работает, но не при использовании MobileApplication.

Изображение не отображается, потому что CSS переопределяет его, я думаю. Если я использую css setStyle, то это работает. Проблема в том, что я извлекаю изображения из кэша в al oop для массива кнопок, поэтому у меня нет имени файла, чтобы дать css, только загруженное изображение (и я думаю, что css не Не кешируйте изображения, чтобы они снова загружались).

Как это сделать?

...