我有一个JavaFX TableView,拥有两列。这个表格使用一个ObservableList gasRatioMeasures
作为它的模型。
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;
}
}
我可以帮您进行翻译。这段文本涉及到IT技术,作者想要将其中一个部分设置为可编辑,另一个部分设置为不可编辑。作者尝试了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已经可以正常显示(当我没有初始化measuresColumn时)。
PPS:我还尝试过用“setOnEditStart”代替“setOnEditCommit”。 “setOnEditCommit”没有被调用,但在可编辑列中可以调用“setOnEditStart”。