2

TableView にデータを入力するためにすべてを試しました。次のコードはテーブルに新しい行を挿入しますが、データはテーブルに表示されません。私はこれの説明を見つけようとしましたが、成功しませんでした。

助けてください。何が悪いのかわかりません。

controller.java 内

@FXML private TableView<TempTableData> tempTable;
@FXML private TableColumn<TempTableData,String> columnTime;
@FXML private TableColumn<TempTableData,Float> columnTempOne;
@FXML private TableColumn<TempTableData,Float> columnTempTwo;
@FXML private TableColumn<TempTableData,Float> columnTempThree;

@FXML protected void initialize() {


columnTime = new TableColumn<TempTableData,String>();
columnTime.setCellValueFactory(
    new PropertyValueFactory<TempTableData,String>("Time"));

columnTempOne = new TableColumn<TempTableData,Float>();
columnTempOne.setCellValueFactory(
    new PropertyValueFactory<TempTableData,Float>("Temp 1"));

columnTempTwo = new TableColumn<TempTableData,Float>();
columnTempTwo.setCellValueFactory(
    new PropertyValueFactory<TempTableData,Float>("Temp 2"));

columnTempThree = new TableColumn<TempTableData,Float>();
columnTempThree.setCellValueFactory(
    new PropertyValueFactory<TempTableData,Float>("Temp 3"));

tempDataList = FXCollections.observableArrayList();
tempDataList.add(new TempTableData("0",3.0f, 4f, 5f));
tempTable.setItems(tempDataList);
}

TempTableData.java

公開クラス TempTableData {

private final SimpleStringProperty time;
private final SimpleFloatProperty dataSensorOne;
private final SimpleFloatProperty dataSensorTwo;
private final SimpleFloatProperty dataSensorThree;

public TempTableData(String time, float dataSensorOne, float dataSensorTwo, float dataSensorThree){
    this.time = new SimpleStringProperty(time);
    this.dataSensorOne = new SimpleFloatProperty(dataSensorOne);
    this.dataSensorTwo = new SimpleFloatProperty(dataSensorTwo);
    this.dataSensorThree = new SimpleFloatProperty(dataSensorThree);
}
public String getTime() {
    return time.get();
}

public void setTime(String time) {
    this.time.set(time);
}

public float getDataSensorOne() {
    return dataSensorOne.get();
}

public void setDataSensorOne(float dataSensorOne) {
    this.dataSensorOne.set(dataSensorOne);
}

public float getDataSensorTwo() {
    return dataSensorTwo.get();
}

public void setDataSensorTwo(float dataSensorTwo) {
    this.dataSensorTwo.set(dataSensorTwo);
}

public float getDataSensorThree() {
    return dataSensorThree.get();
}

public void setDataSensorThree(float dataSensorThree) {
    this.dataSensorThree.set(dataSensorThree);
}

public String toString(){
    String string = String.format("[time: %s | dataSensorOne: %f |dataSensorTwo: %f |dataSensorThree: %f ]", 
            time.get(), dataSensorOne.get(), dataSensorTwo.get(), dataSensorThree.get());
    return string;
}
}
4

2 に答える 2

4

なぜテーブルの列を再度作成するのですか? @FXML アノテーション (インジェクション!) で既に作成されているためです。

コードから列インスタンス作成行を削除すると、すべて問題ありません

// remove these lines
columnTime = new TableColumn<TempTableData,String>();
columnTempTwo = new TableColumn<TempTableData,Float>();
columnTempThree = new TableColumn<TempTableData,Float>();
于 2013-01-10T20:20:36.607 に答える