【问题标题】:JavaFX execute start(Stage stage) again during app executionJavaFX 在应用程序执行期间再次执行 start(Stage stage)
【发布时间】:2017-02-21 17:23:53
【问题描述】:

我是法比奥。

我正在用 JavaFX 编写剧院的座位预订应用程序。我有128个圆圈作为座位,你可以看到here,占用的是红色,空闲的是绿色,用户选择的是橙色。

当用户点击“Prenota”按钮时,我将所选座位存储在 mySQL 数据库中,因此下次我打开应用程序时,它将显示为红色,而不是绿色。

剧院是通过窗格完成的,因此是否可以在不关闭应用程序的情况下刷新或重新加载整个public void start(Stage stage)以显示新座位?

谢谢大家。

PS:我的启动功能是这样的:

public void start(Stage stage) {
Group mainGroup= new Group(costoCliente,prenota,calcolaTotale,textMessaggi, //so on//);         

Scene mainScene= new Scene(mainGroup,903,950);
mainScene.setFill(Paint.valueOf(configXML.parametriStile.coloreSfondo));
stage.setTitle("Theater Booking");
stage.setScene(mainScene);
stage.show();
}

【问题讨论】:

  • 您想重新加载整个应用程序,因为有一条数据发生了变化...???我建议你重新设计你的应用程序。
  • 我更喜欢座位类中的 void 函数 setRed(int number),但我不知道如何选择那个座位。 pane.getChildren().add(seat); -> 是将座位添加到窗格的代码,因此我无法访问单个座位。 @James_D
  • 说真的,如果没有办法更新您需要的各个数据并让视图做出相应的响应,那么您确实需要重新设计应用程序的结构方式(至少是您拥有数据建模)。如果您不熟悉 MVC/MVP 设计,您可能应该阅读它,并使用这种应用程序结构。
  • 您知道我的窗格影院功能是如何工作的,那么我可以像您对 reservedProperty 所做的那样在那里工作吗? @James_D

标签: java javafx javafx-2


【解决方案1】:

在 Prenota 按钮控制器中,存储数据后,可以使用 FXMLLoader 类。 类似的东西:

FXMLLoader loader = new
FXMLLoader();   
loader.setLocation(Aplicacion.class.getResource("MainView.fxml"));
mainLayout = loader.load();          
Scene scene = new Scene(mainLayout);
primaryStage.setScene(scene); 
primaryStage.show();

【讨论】:

  • 嗨,谢谢。我更新了我的问题,包括我的函数开始示例。我没有使用 FXML,所以我正在寻找更简单的方法
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 2016-11-20
  • 2012-12-29
  • 1970-01-01
相关资源
最近更新 更多