2 つの列を持つ JavaFX TableView があります。このテーブルは ObservableListgasRatioMeasures
をモデルとして使用します。
public class GasRatioMeasureBean {
private String number;
private String measure;
public String getNumber() {
return number;
}
public void setNumber(int number) {
this.number = "Measure" + (number + 1) + "(%)";
}
public String getMeasure() {
return measure;
}
public void setMeasure(String measure) {
this.measure = measure;
}
}
そのうちの 1 つを編集可能に、もう 1 つを編集不可に設定したいと思います。
まず、FXML の方法を試しました。
<TableView layoutX="24.0" layoutY="122.0" prefHeight="200.0" prefWidth="215.0" fx:id="measureTableView">
<columns>
<TableColumn editable="false" prefWidth="100.0" sortable="false" text="No" fx:id="measureNumbersColumn" />
<TableColumn editable="true" prefWidth="110.0" sortable="false" text="Measures" fx:id="measuresColumn" />
</columns>
</TableView>
しかし、これはうまくいきませんでした。テーブルは常に編集できません。
私もJavaの方法を試しました:
private void initMeasuresTableView() {
measureNumbersColumn.setCellValueFactory(new PropertyValueFactory<GasRatioMeasureBean, String>("number"));
measureNumbersColumn.setEditable(false);
measuresColumn.setCellValueFactory(new PropertyValueFactory<GasRatioMeasureBean, String>("measure"));
measuresColumn.setOnEditCommit(
new EventHandler<CellEditEvent<GasRatioMeasureBean, String>>() {
public void handle(CellEditEvent<GasRatioMeasureBean, String> measure) {
((GasRatioMeasureBean) measure.getTableView().getItems().get(
measure.getTablePosition().getRow())
).setMeasure(measure.getNewValue());
}
}
);
measureTableView.setItems(gasRatioMeasures);
measureTableView.setEditable(true);
}
しかし、これもうまくいきませんでした。すべてのテーブルは編集できませんでした。
TableColumn にeditable
プロパティがある場合は、個別に設定できる必要があります。
私がどこで間違っているか知っているなら、私を助けてください。ありがとう!
PS: 列 measureNumbersColumn は既に正常に表示されています (measureColumn を初期化していない場合)。
PPS: の代わりに私も試しましたsetOnEditCommit
setOnEditStart
。 setOnEditCommit
は呼び出されませんがsetOnEditStart
、編集可能な列で呼び出すことができます。