gpt4 book ai didi

可编辑单元格上的 JavaFX 工具提示

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:37 24 4
gpt4 key购买 nike

我有一个带有可编辑单元格的TableView。我使用推荐的 JavaFx 回调来实现可编辑单元格。

myCol.setCellFactory(TextFieldTableCell.<Student>forTableColumn());

我想向每个可编辑单元格添加工具提示,因此我必须制作自己的回调。是否可以扩展上述回调以添加添加工具提示的功能,或者我是否必须从头开始编写自己的回调?

最佳答案

我担心您必须创建自己的 TableCell,然后将其分配给您的 TableColumn - myCol。

一个简单的例子如图所示,您还需要重写TableCell的所有功能:)

class EditingCell extends TableCell<Student, String> {

private TextField textField;

public EditingCell() {
setToolTip("YOUR MESSAGE");
}

@Override
public void startEdit() {
if (!isEmpty()) {
super.startEdit();
createTextField();
setText(null);
setGraphic(textField);
textField.selectAll();
}
}

@Override
public void cancelEdit() {
super.cancelEdit();

setText((String) getItem());
setGraphic(null);
}

@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);

if (empty) {
setText(null);
setGraphic(null);
} else {
if (isEditing()) {
if (textField != null) {
textField.setText(getString());
}
setText(null);
setGraphic(textField);
} else {
setText(getString());
setGraphic(null);
}
}
}

private void createTextField() {
textField = new TextField(getString());
textField.setMinWidth(this.getWidth() - this.getGraphicTextGap()* 2);
textField.focusedProperty().addListener(new ChangeListener<Boolean>(){
@Override
public void changed(ObservableValue<? extends Boolean> arg0,
Boolean arg1, Boolean arg2) {
if (!arg2) {
commitEdit(textField.getText());
}
}
});
}

private String getString() {
return getItem() == null ? "" : getItem().toString();
}
}
}

然后将其添加到您的 TableColumn

Callback<TableColumn, TableCell> cellFactory =
new Callback<TableColumn, TableCell>() {
public TableCell call(TableColumn p) {
return new EditingCell();
}
};

firstNameCol.setCellFactory(cellFactory);

不要忘记使您的表格可编辑!

table.setEditable(true);

关于可编辑单元格上的 JavaFX 工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028773/

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