Я хотел бы создать 8 * 6 GridPane изображений, сгенерированных в СЛУЧАЙНОМ порядке каждый раз, когда я запускаю программу. Я все еще изучаю JavaFX и не могу понять, как это реализовать.
До сих пор я мог генерировать только 4 картинки подряд, а НЕ генерировать случайно.
Я пытаюсь научиться использовать структуру MVP.
У меня есть папка ресурсов с 4 картинками.
Мой основной класс:
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception
{
MyModel model = new MyModel();
MyView view = new MyView();
Presenter presenter = new Presenter(model, view);
primaryStage.setTitle("Sweet Candy");
Scene scene = new Scene(view);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
Мой класс модели:
public class MyModel {
public static final int candyNumber = 4;
private int candiesAmount;
private Random random;
public MyModel() {
this.candiesAmount = 4;
this.random = new Random();
}
public void play()
{
candiesAmount = random.nextInt(candyNumber)+1;
}
public int getCandiesAmount() {
return candiesAmount;
}
}
Мой класс просмотра:
public class MyView extends GridPane
{
private Label lblTitle;
private Button btnPlay;
private Label lblTime;
private ImageView ivcandy1;
private ImageView ivcandy2;
private ImageView ivcandy3;
private ImageView ivcandy4;
public MyView() {
initialiseNodes();
layoutNodes();
}
private void initialiseNodes() {
this.btnPlay = new Button();
ivcandy1 = new ImageView("candy1.png");
ivcandy2= new ImageView("candy2.png");
ivcandy3 = new ImageView("candy3.PNG")
ivcandy4 = new ImageView("candy4.PNG");
lblTime = new Label("Time left:");
btnPlay = new Button("Start");
}
private void layoutNodes(){
super.add(lblTime,4,0);
GridPane.setMargin(lblTime, new Insets(10));
super.add(ivcandy1, 1, 1);
GridPane.setMargin(ivcandy1, new Insets(10));
super.add(ivcandy2, 2, 1);
GridPane.setMargin(ivcandy2, new Insets(10));
super.add(ivcandy3, 3, 1);
GridPane.setMargin(ivcandy3, new Insets(10));
super.add(ivcandy4, 4, 1);
GridPane.setMargin(ivcandy4, new Insets(10));
super.add(btnPlay, 0, 3, 2, 1);
GridPane.setHalignment(btnPlay, HPos.LEFT);
GridPane.setMargin(btnPlay, new Insets(10, 10, 10, 10));
}
public Label getLblTitle () {
return lblTitle;
}
public Button getBtnPlay () {
return btnPlay;
}`
public ImageView getIvcandy1() {
return ivcandy1;
}
public ImageView getIvcandy2() {
return ivcandy2;
}
public ImageView getIvcandy3() {
return ivcandy3;
}
public ImageView getIvcandy4() {
return ivcandy4;
}
}
Класс моего докладчика:
public class Presenter {
private MyView view;
private MyModel model;
private Random random;
public Presenter(MyModel model, MyView view) {
this.model = model;
this.view = view;
addEventHandlers();
updateView();
}
private void addEventHandlers() {
view.getBtnPlay().setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
model.play();
updateView();
}
});
}
private void updateView(){
view.getIvcandy1().setImage(new Image("candy" + model.getCandiesAmount() + ".png"));
}
}
Заранее спасибо, если кто-то может мне помочь.