gpt4 book ai didi

java - 如何遍历 JavaFX 上的按钮列表并根据所述按钮的数据显示场景

转载 作者:行者123 更新时间:2023-12-02 00:13:30 25 4
gpt4 key购买 nike

我正在制作一个电影院/电影院预订系统。

我设置了一个按钮列表来显示主页中正在播放的电影列表。我正在尝试创建一个功能,当我们单击主页中的某个按钮时,它将更改场景,您可以在其中看到所述电影的完整详细信息。

问题是它总是只显示我的电影列表中的第一部电影。

我尝试设置某种指针来识别每个按钮。

以下是对象:

filmPointer从1开始,因为filmNumber从1开始,如果我将其设置为0也会弹出错误

private static List<User> userList = User.getList();
private static List<Film> filmList = Film.getList();
private static ArrayList<Button> allFilmLink = new ArrayList<>();
public static int filmPointer = 1, accountPointer;

在主页上显示带有图像的按钮的功能:

public void filmListContent(){
mainPane.setContent(filmListPane);

for (int x = 0; x < filmList.size(); x++) {
Button listFilmButton = new Button();
listFilmButton.setPrefHeight(300);
listFilmButton.setPrefWidth(250);
int finalX = x;
listFilmButton.setOnAction(actionEvent -> {
mainWindow.setScene(currentFilmScene); //open film detail
filmPointer = filmList.get(finalX).getNumberFilm();

});
imageFilm = new Image(getClass().getResourceAsStream(filmList.get(x).pathPictureFilm), 250, 350, false, false);
listFilmButton.setGraphic(new ImageView(imageFilm));

allFilmLink.add(listFilmButton);
}
showFilmLink();
}

这是我在另一个类上设置场景及其功能的代码:

private void createFilmScene(){
Text filmTitle = null;
filmPane = new GridPane();
HBox titleHB;

for (int x = 0; x < filmList.size(); x++) {
if (filmList.get(x).getNumberFilm() == Main.filmPointer) {
filmPictureStream = new Image(getClass().getResourceAsStream(filmList.get(x).getPathPictureFilm()));
filmPictureView = new Label("", new ImageView((filmPictureStream)));
filmTitle = new Text(filmList.get(x).getTitle());

}
}

filmTitle.setFont(Font.font("Times New Roman", FontWeight.BOLD, 30));
titleHB = new HBox(11);
titleHB.setAlignment(TOP_CENTER);
titleHB.getChildren().add(filmTitle);
filmPane.add(titleHB, 5, 19);
filmPane.add(filmPictureView, 2, 2, 2, 2); // placement not final
filmPane.setHgap(5);
filmPane.setVgap(15);

}

如果我单击“47 Meters Down”,我预计场景会发生变化,然后详细介绍我单击的电影。但它总是显示 IT 第 2 章。

我的主页:Imgur Link

当我点击《47米下》时,我的电影详细信息页面:Imgur Link

最佳答案

问题是 createFilmScene() 调用得太早(在 start 方法中)。我这样编码是因为我认为 currentFilmPanecurrentFilmScene 在对其执行任何操作之前必须先初始化。

代码:

public void filmListContent() {
mainPane.setContent(filmListPane);

for (int x = 0; x < filmList.size(); x++) {
Button listFilmButton = new Button();
listFilmButton.setPrefHeight(300);
listFilmButton.setPrefWidth(250);
int finalX = x;
listFilmButton.setOnAction(actionEvent -> {
filmPointer = filmList.get(finalX).getNumberFilm();
currentFilmPane = new GridPane();
FilmPage setFilmPane = new FilmPage(currentFilmPane);
currentFilmScene = new Scene(setFilmPane.asParent(), 1920, 1080);
mainWindow.setScene(currentFilmScene);

});
imageFilm = new Image(getClass().getResourceAsStream(filmList.get(x).pathPictureFilm), 250, 350, false, false);
listFilmButton.setGraphic(new ImageView(imageFilm));

allFilmLink.add(listFilmButton);
}
showFilmLink();
}

关于java - 如何遍历 JavaFX 上的按钮列表并根据所述按钮的数据显示场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58105723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com