对此恐怕我不得不做出自己的TableCell,然后将它分配给您的TableColumn - myCol。
一个简单的例子,如图所示,you need to override all the functions of the TableCell as well :)
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);
这样做是否允许编辑功能(单击时单元变成EditText)?看起来这只是将工具提示功能添加到普通表格单元格。 –
请仔细阅读完整的示例,您需要覆盖TableCell类的功能:) – ItachiUchiha
@IchichiUchiha,您可以添加您发布的代码的引用链接。同样为了完成答案,您可以将OPT需要的工具提示附加到文本字段。 –