gpt4 book ai didi

checkbox - TableView JavaFX 中的居中复选框

转载 作者:行者123 更新时间:2023-12-02 19:45:10 24 4
gpt4 key购买 nike

在处理需要居中复选框列的表格 View 时,我发现一个问题。我可以创建一个带有复选框的列。我还想根据该复选框值在模型中设置属性。我用下面的代码做到了:

isCanceledCol.setCellValueFactory(new Callback<CellDataFeatures<TransactionModel,CheckBox>,ObservableValue<CheckBox>>() {

@Override
public ObservableValue<CheckBox> call(final CellDataFeatures<TransactionModel, CheckBox> p) {
CheckBox cb = new CheckBox();
cb.selectedProperty().addListener(new ChangeListener<Boolean>() {

@Override
public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
p.getValue().setIsCanceled(t1.booleanValue());
}
}
);
canceledCB.add(cb);
return new SimpleObjectProperty(cb);
}

上面代码的问题是,复选框以左对齐方式显示。我想让它居中,但我也想保留复选框的更改事件来更改我的模型属性( p.getValue().setIsCanceled(t1.booleanValue()); )。

我非常感谢你们的帮助。

问候,克里斯玛·安迪卡

最佳答案

JavaFX Ensemble(javafx 示例)拥有您尝试使用的完美代码。另外,他们还提供了在 TableView 中使用 CheckBox 的更好方法。

重点在于 TableView 控件使用的 TableCell 范围。要创建 CheckBox 列,应创建并使用以下内容:

//CheckBoxTableCell for creating a CheckBox in a table cell
public static class CheckBoxTableCell<S, T> extends TableCell<S, T> {
private final CheckBox checkBox;
private ObservableValue<T> ov;

public CheckBoxTableCell() {
this.checkBox = new CheckBox();
this.checkBox.setAlignment(Pos.CENTER);

setAlignment(Pos.CENTER);
setGraphic(checkBox);
}

@Override public void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
setGraphic(checkBox);
if (ov instanceof BooleanProperty) {
checkBox.selectedProperty().unbindBidirectional((BooleanProperty) ov);
}
ov = getTableColumn().getCellObservableValue(getIndex());
if (ov instanceof BooleanProperty) {
checkBox.selectedProperty().bindBidirectional((BooleanProperty) ov);
}
}
}
}

setAlignment(Pos.CENTER) 会将您的控件设置在单元格的中心。

关于checkbox - TableView JavaFX 中的居中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com