Javafx установка фона - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать на моей границе фон с помощью fxml.У меня есть вид и контроллер.Я думаю, что вы должны сказать в fxml: borderPane.setBackground (новый фон (myBI));

, но я не знаю, как.использование css недоступно.

Просмотр:

package application;


import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("Layout_play.fxml"));
        primaryStage.setTitle("Test");
        primaryStage.setFullScreen(true);
        primaryStage.setScene(new Scene(root, 1280, 720));
        primaryStage.show();
    }


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

Контроллер:

public class PlayController {

    @FXML
    private Label label;
    @FXML
    private TextField textfield;

    @FXML
    private BackgroundImage myBI= new BackgroundImage(new Image("/Background.png",1280,720,false,true),
            BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,
              BackgroundSize.DEFAULT);



    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello  " + textfield.getText());
    }
}

и как последний fxml

<BorderPane fx:controller="application.PlayController" xmlns:fx="http://javafx.com/fxml"
    prefHeight="200" prefWidth="320" >

    <top>
        <Text text="java-Buddy"/>
    </top>
    <left>
        <Label text="Who are you?"/>
    </left>
    <center>
        <TextField id="textfield" fx:id="textfield"/>
    </center>
    <right>
        <Button id="button"  text="Click Me!"
            onAction="#handleButtonAction" fx:id="button"/>
    </right>
    <bottom>
        <Label id="label" fx:id="label"/>
    </bottom>

</BorderPane>

1 Ответ

0 голосов
/ 24 мая 2018

Поскольку вы не можете использовать CSS, это не будет красиво.

Вы уже определили BackgroundImage как myBI, который вы можете использовать для установки фона для вашего элемента.

Дайте вашему BorderPane fx:id, например,

<BorderPane fx:id="bPane" fx:controller="application.PlayController" xmlns:fx="http://javafx.com/fxml"
prefHeight="200" prefWidth="320" >

, затем оттуда добавьте

@FXML
private Borderpane bPane;

в ваш класс контроллера.

наконецсоздать метод

@FXML
public void initialize(){
    bPane.setBackground(new Background(myBI));
}
...