Добавление фонового изображения в javaFX [дубликат]

По умолчанию изображение отображается inline, как буква.

Он сидит в той же строке, на которой сидят a, b, c и d.

Существует пространство ниже этой строки для descenders, которые вы найдете на таких буквах, как f, j, p и q.

Вы можете отрегулировать vertical-align изображения, чтобы разместить его в другом месте (например, middle) или изменить display, чтобы он не был встроен.

30
задан John 16 March 2012 в 15:28
поделиться

3 ответа

Я знаю, что это старый вопрос

Но если вы хотите сделать это программно или java-способом

Для изображений фона; вы можете использовать BackgroundImage класс

BackgroundImage myBI= new BackgroundImage(new Image("my url",32,32,false,true),
        BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,
          BackgroundSize.DEFAULT);
//then you set to your node
myContainer.setBackground(new Background(myBI));

Для Paint или Fill Backgrounds; вы можете использовать BackgroundFill class

BackgroundFill myBF = new BackgroundFill(Color.BLUEVIOLET, new CornerRadii(1),
         new Insets(0.0,0.0,0.0,0.0));// or null for the padding
//then you set to your node or container or layout
myContainer.setBackground(new Background(myBF));

Сохраняет ваш java live & amp; & amp; & amp; ваш css мертв ..

22
ответ дан Roy Shmuli 19 August 2018 в 15:28
поделиться

Вы можете изменить стиль непосредственно для сцены, используя класс .root:

.root {
    -fx-background-image: url("https://www.google.com/images/srpr/logo3w.png");
}

Добавьте это в CSS и загрузите его как «Улук Бий», описанный в его ответе.

11
ответ дан Sergey Grinev 19 August 2018 в 15:28
поделиться
  • 1
    К сожалению! Как заставить изображение заполнить всю сцену? Его оставляют белые пробелы слева и сверху. – John 16 March 2012 в 22:15
  • 2
    -fx-background-repeat: stretch; – Sergey Grinev 16 March 2012 в 23:59
  • 3
    Он все еще оставляет пространство. Корень сцены - это GridPane, и я сосредоточен на сетке на сцене. Как предотвратить центрирование фонового изображения? – John 17 March 2012 в 00:46
  • 4
    -fx-background-position: top left; – Sergey Grinev 17 March 2012 в 01:46
  • 5
    Я устанавливаю css в borderpane с помощью построителя сцен, он работает, когда я запускаю приложение, но я не вижу никаких изменений в построителе сцен, знаете ли вы, как это исправить? – Muhammad Ali 25 May 2017 в 19:59

Один из подходов может быть таким:

1) Создайте файл CSS с именем «style.css» и определите в нем селектор id:

#pane{
    -fx-background-image: url("background_image.jpg");
    -fx-background-repeat: stretch;   
    -fx-background-size: 900 506;
    -fx-background-position: center center;
    -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); 
}

2) Установите идентификатор самого верхнего элемента управления (или любого элемента управления) в сцене со значением, определенным в CSS, и загрузите этот файл CSS в сцену:

  public class Test extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        StackPane root = new StackPane();
        root.setId("pane");
        Scene scene = new Scene(root, 300, 250);
        scene.getStylesheets().addAll(this.getClass().getResource("style.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

Вы также может указывать идентификатор элемента управления в файле FXML:

<StackPane id="pane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="demo.Sample">
    <children>
    </children>
</StackPane>

Для получения дополнительной информации о стилях CSS JavaFX см. это руководство .

33
ответ дан Uluk Biy 19 August 2018 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: