にバインドすることができません。ObservableList with FXMLでTableViewアイテムをバインドできません。ObservableListを持つTableViewアイテムをFXML - Java FX
materialTable.setItems(materialDataObservableList)を設定すると、すべてうまく動作します。ボタンクリックイベント。 しかし、私はボタンをTableViewについて知りたくないので、materialTable.itemsをmaterialDataObservableListプロパティにバインドしたかったのです。
私は間違っていますか? バインディングの仕組みが分からないかもしれません...
ありがとうございました!
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="464.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.xxx.sm.frontend.fx.MainSceneController">
/*
*/
<children>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<Button fx:id="getMaterialsButton" mnemonicParsing="false" onAction="#getMaterialsButton" text="Get materials" />
<TableView fx:id="materialTable" editable="true" prefHeight="413.0" prefWidth="600.0" items="${materialDataObservableList}" >
//Columns here
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</VBox>
</children>
public class MainSceneController {
private ObservableList<MaterialData> materialDataObservableList;
public TableView materialTable;
public Button getMaterialsButton;
public void getMaterialsButton() {
getMaterialsFromRESTController();
}
private void getMaterialsFromRESTController() {
MaterialClient controller = new MaterialClient();
try {
materialDataObservableList = FXCollections.observableArrayList(controller.getMaterias());
} catch (IOException e) {
System.out.println("Failed to connect to RESTController");
}
//materialTable.setItems(materialDataObservableList);
}
public ObservableList<MaterialData> getMaterialDataObservableList() {
return materialDataObservableList;
}
}
ありがとう、それは私を大いに助けました! – user1803183
有益な答えをありがとう。私は 'TableController'に' initialize() 'メソッドを追加して、ボタンをクリックすることなく項目を取得しました。それが誰かに助けになる場合に備えて、コードは[ここ](https://ideone.com/XZ6p1g)で入手できます。 – c0der