JavaFX:如何调用fxml文件并将数据加载到其中

我是JavaFX的新手,我正在开发一个JavafX项目,我希望将数据从网络加载到GridPane 。 我试图弄清楚如何添加我在UI中从网络收到的数据。

我已经创建了一个gridpane,只有在窗格中加载的东西是Name,Image。

我检查了一些资源,但鉴于我对JavaFX的理解有限,不知道在窗格中添加数据需要修改什么。

我有以下代码:

 public class AccountController { fetchCanvasImagesFromServer.setOnSucceeded(new EventHandler() { @Override public void handle(WorkerStateEvent event) { imageObservableList = FXCollections.observableList(fetchCanvasImagesFromServer.getValue()); for(RestImage image : imageObservableList){ if(!(image == null)) { if (!(image.getCanvasImage() == null)) { try { InputStream in = new ByteArrayInputStream(image.getCanvasImage()); BufferedImage bImageFromConvert = ImageIO.read(in); Image fxImage = SwingFXUtils.toFXImage(bImageFromConvert,null); if(!(fxImage == null)){ System.out.println("Fx image is not null"); } }catch (Exception ignored){} } } } } }); } 

这里我有来自Canvas的数据。 现在,此代码由LoginController调用,并且仅在登录后才检索此数据。

 public class LoginController { @FXML private TextField user; @FXML private TextField password; @FXML private Button loginButton; public void initManager(final LoginManager loginManager) { loginButton.setOnAction(event -> { String sessionID1 = authorize(); if (sessionID1 != null) { loginManager.authenticated(); } }); } } 

最后,上面validation的方法调用网络方法来检索数据。

Gridpane:

              

我的问题是,如何在canvas.fxml加载RestImage对象数据。 请告诉我。

加载canvas.fxml ,不要修改FXML而是修改UI对象。 如果你在FXML中将fx:id="root"GridPane ,那么你可以在AccountController有一个字段@FXML GridPane root; 。 加载图像后,为每个图像创建一个ImageView并附加到根目录:

 root.add(myImageView, columnNumber, rowNumber); 

整个应用程序设计值得怀疑,但上面的内容将为您提供特定问题的解决方案。