我是JavaFX的新手,我正在開發一個JavafX項目,我想從網絡中將數據加載到GridPane
。我想弄清楚如何在UI中添加從網絡接收到的數據。JavaFX:如何調用fxml文件並將數據加載到其中
我已經創建了一個gridpane,只有在窗格中加載的東西是Name,Image。
我檢查了一些資源,但由於我對JavaFX的理解有限,不知道要在窗格中添加數據時需要修改哪些內容。
代碼,我有:
public class AccountController {
fetchCanvasImagesFromServer.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@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){}
}
}
}
}
});
}
這裏我從畫布的數據。現在,此代碼由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();
}
});
}
}
最後,上面驗證的方法調用網絡方法來檢索數據。
Gridpane:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="Controller.AccountController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
我的問題是,我怎麼能加載canvas.fxml
的RestImage對象數據。請讓我知道。
你能告訴我爲什麼應用程序設計有問題嗎?如果你願意的話,我可以把你的整個項目打包發給你。我正在啓動JavaFX,並且我遇到的主要問題是找到像Swing/Core-Java那樣的好資源。 –
我可能很快判斷,但通常在使用JavaFX及其MVC模式時,可以將任何與邏輯相關的代碼隔離爲域模型,並儘可能保持控制器的清潔。顯然,需要檢查整個系統才能提供更好的反饋。如果你有更多的興趣,我會做一些類似的JavaFX教程。我不打算宣傳任何鏈接,您可以通過搜索我的用戶名和JavaFX找到它們。 – AlmasB