下面列出了怎么用javafx.scene.control.TableColumn的API类实例代码及写法,或者点击链接到github查看源代码。
public void addColumn(final String columnName, final int percentWidth) {
final TableColumn<C, Object> column = new TableColumn<>(columnName);
tableColumns.put(columnName, column);
column.prefWidthProperty().bind(table.widthProperty().multiply(percentWidth / 100.0));
column.setCellValueFactory(cellData -> new SimpleObjectProperty<>(translator.getCellData(cellData.getValue(), columnName)));
column.setCellFactory(columnData -> {
return new TableCell<C, Object>() {
@Override
public void updateItem(final Object item, final boolean empty) {
super.updateItem(item, empty);
if (item != null) {
this.setText(translator.getCellText(this.getTableRow().getItem(), item, columnName));
final ConstellationColor color = translator.getCellColor(this.getTableRow().getItem(), item, columnName);
this.setBackground(new Background(new BackgroundFill(color.getJavaFXColor(), CornerRadii.EMPTY, Insets.EMPTY)));
}
}
};
});
column.setSortable(true);
table.getColumns().add(column);
}
@SuppressWarnings("unchecked")
@Test
public void selectCell() {
TableView<?> tableView = (TableView<?>) getPrimaryStage().getScene().getRoot().lookup(".table-view");
LoggingRecorder lr = new LoggingRecorder();
Platform.runLater(() -> {
tableView.getSelectionModel().setCellSelectionEnabled(true);
Point2D point = getPoint(tableView, 1, 1);
RFXTableView rfxTableView = new RFXTableView(tableView, null, point, lr);
rfxTableView.focusGained(null);
@SuppressWarnings("rawtypes")
TableColumn column = getTableColumnAt(tableView, 1);
tableView.getSelectionModel().select(1, column);
rfxTableView.focusLost(null);
});
List<Recording> recordings = lr.waitAndGetRecordings(1);
Recording recording = recordings.get(0);
AssertJUnit.assertEquals("recordSelect", recording.getCall());
AssertJUnit.assertEquals("{\"cells\":[[\"1\",\"Last\"]]}", recording.getParameters()[0]);
}
/**
* テーブルソート列の設定を行う
* @param table テーブル
* @param key テーブルのキー名
*/
public static <S> void setSortOrder(TableView<S> table, String key) {
Map<String, String> setting = AppConfig.get()
.getColumnSortOrderMap()
.get(key);
ObservableList<TableColumn<S, ?>> sortOrder = table.getSortOrder();
if (setting != null) {
// 初期設定
Map<String, TableColumn<S, ?>> columnsMap = getColumns(table)
.collect(Collectors.toMap(Tables::getColumnName, c -> c, (c1, c2) -> c1));
setting.forEach((k, v) -> {
Optional.ofNullable(columnsMap.get(k)).ifPresent(col -> {
sortOrder.add(col);
col.setSortType(SortType.valueOf(v));
});
});
}
// ソート列またはソートタイプが変更された時に設定を保存する
sortOrder.addListener((ListChangeListener<TableColumn<S, ?>>) e -> storeSortOrder(table, key));
getColumns(table).forEach(col -> {
col.sortTypeProperty().addListener((ob, o, n) -> storeSortOrder(table, key));
});
}
@SuppressWarnings("unchecked")
@Test
public void getText() {
TableView<?> tableView = (TableView<?>) getPrimaryStage().getScene().getRoot().lookup(".table-view");
LoggingRecorder lr = new LoggingRecorder();
List<Object> text = new ArrayList<>();
Platform.runLater(() -> {
tableView.getSelectionModel().setCellSelectionEnabled(true);
Point2D point = getPoint(tableView, 1, 1);
RFXTableView rfxTableView = new RFXTableView(tableView, null, point, lr);
rfxTableView.focusGained(null);
@SuppressWarnings("rawtypes")
TableColumn column = getTableColumnAt(tableView, 1);
tableView.getSelectionModel().select(1, column);
rfxTableView.focusLost(null);
text.add(rfxTableView.getAttribute("text"));
});
new Wait("Waiting for table text.") {
@Override
public boolean until() {
return text.size() > 0;
}
};
AssertJUnit.assertEquals("{\"cells\":[[\"1\",\"Last\"]]}", text.get(0));
}
@Override
public void initialize(final URL location, final ResourceBundle resources) {
final ObservableList<TableColumn<Throwable, ?>> cols = table.getColumns();
((TableColumn<Throwable, String>) cols.get(0)).setCellValueFactory(cell -> new ReadOnlyStringWrapper(cell.getValue().toString()));
((TableColumn<Throwable, String>) cols.get(1)).setCellValueFactory(cell -> new ReadOnlyStringWrapper(cell.getValue().getMessage()));
((TableColumn<Throwable, String>) cols.get(2)).setCellValueFactory(cell -> {
final StackTraceElement[] stackTrace = cell.getValue().getStackTrace();
final String msg = stackTrace.length > 0 ? stackTrace[0].toString() : "";
return new ReadOnlyStringWrapper(msg);
});
cols.forEach(col -> col.prefWidthProperty().bind(table.widthProperty().divide(3)));
table.itemsProperty().bind(BadaboomCollector.INSTANCE.errorsProperty());
table.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
final Callable<String> converter = () -> {
final Throwable ex = table.getSelectionModel().getSelectedItem();
if(ex == null) {
return "";
}
return Arrays.stream(ex.getStackTrace()).map(Object::toString).collect(Collectors.joining("\n\tat ", ex.toString() + "\n\tat ", "")); //NON-NLS
};
stack.textProperty().bind(Bindings.createStringBinding(converter, table.getSelectionModel().selectedItemProperty()));
}
private void setPriceColumnCellFactory() {
priceColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
priceColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<OpenOfferListItem, OpenOfferListItem> call(
TableColumn<OpenOfferListItem, OpenOfferListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final OpenOfferListItem item, boolean empty) {
super.updateItem(item, empty);
getStyleClass().removeAll("offer-disabled");
if (item != null) {
if (model.isDeactivated(item)) getStyleClass().add("offer-disabled");
setGraphic(new AutoTooltipLabel(model.getPrice(item)));
} else {
setGraphic(null);
}
}
};
}
});
}
private void setDateColumnCellFactory() {
dateColumn.getStyleClass().add("first-column");
dateColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
dateColumn.setCellFactory(new Callback<>() {
@Override
public TableCell<LockedListItem, LockedListItem> call(TableColumn<LockedListItem,
LockedListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final LockedListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty) {
if (getTradable(item).isPresent())
setGraphic(new AutoTooltipLabel(DisplayUtils.formatDateTime(getTradable(item).get().getDate())));
else
setGraphic(new AutoTooltipLabel(Res.get("shared.noDateAvailable")));
} else {
setGraphic(null);
}
}
};
}
});
}
public TableSample() {
final ObservableList<Person> data = FXCollections.observableArrayList(
new Person("Jacob", "Smith", "[email protected]" ),
new Person("Isabella", "Johnson", "[email protected]" ),
new Person("Ethan", "Williams", "[email protected]" ),
new Person("Emma", "Jones", "[email protected]" ),
new Person("Michael", "Brown", "[email protected]" )
);
TableColumn firstNameCol = new TableColumn();
firstNameCol.setText("First");
firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
TableColumn lastNameCol = new TableColumn();
lastNameCol.setText("Last");
lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));
TableColumn emailCol = new TableColumn();
emailCol.setText("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(new PropertyValueFactory("email"));
TableView tableView = new TableView();
tableView.setItems(data);
tableView.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
getChildren().add(tableView);
}
private void setVolumeColumnCellFactory() {
volumeColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
volumeColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<OpenOfferListItem, OpenOfferListItem> call(
TableColumn<OpenOfferListItem, OpenOfferListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final OpenOfferListItem item, boolean empty) {
super.updateItem(item, empty);
getStyleClass().removeAll("offer-disabled");
if (item != null) {
if (model.isDeactivated(item)) getStyleClass().add("offer-disabled");
setGraphic(new AutoTooltipLabel(model.getVolume(item)));
} else {
setGraphic(null);
}
}
};
}
});
}
private void setMarketColumnCellFactory() {
marketColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
marketColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<FailedTradesListItem, FailedTradesListItem> call(
TableColumn<FailedTradesListItem, FailedTradesListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final FailedTradesListItem item, boolean empty) {
super.updateItem(item, empty);
setGraphic(new AutoTooltipLabel(model.getMarketLabel(item)));
}
};
}
});
}
private void addCol() {
TableColumn tc = new TableColumn();
tc.setEditable(true);
tc.setCellValueFactory(param -> {
CellDataFeatures<ZRow, String> dtf = (CellDataFeatures<ZRow, String>) param;
return new SimpleStringProperty(dtf.getValue().getRow().get(0));
});
tc.setCellFactory(TextFieldTableCell.forTableColumn());
tc.setOnEditCommit(t -> {
CellEditEvent<ZRow, String> evt = (CellEditEvent<ZRow, String>) t;
List<String> row = evt.getTableView().getItems().get(evt.getTablePosition().getRow()).getRow();
row.set(evt.getTablePosition().getColumn(), evt.getNewValue());
});
tc.setPrefWidth(150);
TextField txf = new TextField();
txf.setPrefWidth(150);
txf.setPromptText(Configuration.getBundle().getString("ui.dialog.table_editor.colon") +
(tableView.getColumns().size()+1));
tc.setGraphic(txf);
tableView.getColumns().addAll(tc);
postAddColumn();
}
@Override
public void commitEdit(final T valNew) {
if (isEditing()) {
super.commitEdit(valNew);
} else {
final TableView<S> tbl = getTableView();
if (tbl != null) {
final TablePosition<S, T> pos = new TablePosition<>(tbl, getTableRow().getIndex(), getTableColumn()); // instead of tbl.getEditingCell()
final CellEditEvent<S, T> ev = new CellEditEvent<>(tbl, pos, TableColumn.editCommitEvent(), valNew);
Event.fireEvent(getTableColumn(), ev);
}
updateItem(valNew, false);
if (tbl != null) {
tbl.edit(-1, null);
}
// TODO ControlUtils.requestFocusOnControlOnlyIfCurrentFocusOwnerIsChild(tbl);
}
}
private void setVolumeColumnCellFactory() {
volumeColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
volumeColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<FailedTradesListItem, FailedTradesListItem> call(
TableColumn<FailedTradesListItem, FailedTradesListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final FailedTradesListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null)
setGraphic(new AutoTooltipLabel(model.getVolume(item)));
else
setGraphic(null);
}
};
}
});
}
private TableView<InputItem> createInputs()
{
TableColumn<InputItem, String> col = new TableColumn<>(Messages.FormulaTabInput);
col.setCellValueFactory(c -> c.getValue().input_name);
input_table.getColumns().add(col);
col = new TableColumn<>(Messages.FormulaTabVariable);
col.setCellValueFactory(c -> c.getValue().variable_name);
col.setCellFactory(TextFieldTableCell.forTableColumn());
// When variable is renamed, re-evaluate formula
col.setOnEditCommit(event -> parseFormula());
col.setEditable(true);
input_table.getColumns().add(col);
input_table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
input_table.setTooltip(new Tooltip(Messages.FormulaTabTT));
input_table.setEditable(true);
// Double-click (on input column) adds that variable name to formula
input_table.addEventHandler(MouseEvent.MOUSE_PRESSED, event ->
{
if (event.getClickCount() == 2)
insert(input_table.getSelectionModel().getSelectedItem().variable_name.get());
});
return input_table;
}
public TableScrollSample() {
final ObservableList<Person> data = FXCollections.observableArrayList(
new Person("Jacob", "Smith", "[email protected]"),
new Person("Isabella", "Johnson", "[email protected]"),
new Person("Ethan", "Williams", "[email protected]"),
new Person("Emma", "Jones", "[email protected]"), new Person("Michael", "Brown", "[email protected]"));
TableColumn firstNameCol = new TableColumn();
firstNameCol.setText("First");
firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
TableColumn lastNameCol = new TableColumn();
lastNameCol.setText("Last");
lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));
TableColumn emailCol = new TableColumn();
emailCol.setText("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(new PropertyValueFactory("email"));
TableView tableView = new TableView();
tableView.setItems(data);
ObservableList items = tableView.getItems();
for (int i = 0; i < 10; i++)
items.add(new Person("Name" + i, "Last" + i, "Email " + i));
tableView.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
getChildren().add(tableView);
}
private void handleKey(final KeyEvent event)
{
if (event.getCode() == KeyCode.TAB)
{
// Commit value from combo's text field into combo's value...
combo.commitValue();
// .. and use that for the cell
commitEdit(combo.getValue());
// Edit next/prev column in same row
final ObservableList<TableColumn<List<ObservableCellValue>, ?>> columns = getTableView().getColumns();
final int col = columns.indexOf(getTableColumn());
final int next = event.isShiftDown()
? (col + columns.size() - 1) % columns.size()
: (col + 1) % columns.size();
editCell(getIndex(), columns.get(next));
event.consume();
}
}
private void setPaymentMethodColumnCellFactory() {
paymentMethodColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
paymentMethodColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<PendingTradesListItem, PendingTradesListItem> call(
TableColumn<PendingTradesListItem, PendingTradesListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final PendingTradesListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty)
setGraphic(new AutoTooltipLabel(model.getPaymentMethod(item)));
else
setGraphic(null);
}
};
}
});
}
private void setRoleColumnCellFactory() {
roleColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
roleColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<PendingTradesListItem, PendingTradesListItem> call(
TableColumn<PendingTradesListItem, PendingTradesListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final PendingTradesListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty)
setGraphic(new AutoTooltipLabel(model.getMyRole(item)));
else
setGraphic(null);
}
};
}
});
}
private TableView<Person> createTable() {
final TableView<Person> table = new TableView<Person>();
table.setEditable(true);
TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
TableColumn<Person, String> emailCol = new TableColumn<>("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(new PropertyValueFactory<Person, String>("email"));
table.getColumns().addAll(Arrays.asList(firstNameCol, lastNameCol, emailCol));
return table;
}
public final void initializeParameterTable(){
parameterTable.setEditable(true);
TableColumn keyColumn = new TableColumn("Parameter");
keyColumn.setMinWidth(Main.columnWidthRIGHT/2-1);
keyColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn valueColumn = new TableColumn("Value");
valueColumn.setMinWidth(Main.columnWidthRIGHT/2-1);
valueColumn.setCellFactory(TextFieldTableCell.forTableColumn());
valueColumn.setCellValueFactory(new PropertyValueFactory<>("value"));
valueColumn.setOnEditCommit(
new EventHandler<CellEditEvent<Parameter, String>>() {
@Override
public void handle(CellEditEvent<Parameter, String> t) {
((Parameter) t.getTableView().getItems().get(t.getTablePosition().getRow())).setValue(t.getNewValue());
}
}
);
parameterTable.getColumns().addAll(keyColumn,valueColumn);
}
private void setUsageColumnCellFactory() {
usageColumn.getStyleClass().add("last-column");
usageColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
usageColumn.setCellFactory(new Callback<>() {
@Override
public TableCell<DepositListItem, DepositListItem> call(TableColumn<DepositListItem,
DepositListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final DepositListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty) {
setGraphic(new AutoTooltipLabel(item.getUsage()));
} else {
setGraphic(null);
}
}
};
}
});
}
@Override
public TableCell<T, Long> call(TableColumn<T, Long> param) {
TableCell<T, Long> cell = new TableCell<T, Long>() {
private final Text text = new Text();
@Override
protected void updateItem(final Long item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || (long) item <= 0) {
setText(null);
setGraphic(null);
return;
}
text.setText(StringTools.format((long) item));
setGraphic(text);
}
};
return cell;
}
@Override
public TableCell<T, P> call(TableColumn<T, P> param) {
TableCell<T, P> cell = new TableCell<T, P>() {
@Override
public void updateItem(P item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setGraphic(null);
return;
}
setText(AppVariables.message((String) item));
setGraphic(null);
}
};
return cell;
}
@Override
public TableCell<T, Long> call(TableColumn<T, Long> param) {
TableCell<T, Long> cell = new TableCell<T, Long>() {
private final Text text = new Text();
@Override
protected void updateItem(final Long item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || (long) item <= 0) {
setText(null);
setGraphic(null);
return;
}
text.setText(DateTools.datetimeToString((long) item));
setGraphic(text);
}
};
return cell;
}
@Override
public TableCell<T, Long> call(TableColumn<T, Long> param) {
TableCell<T, Long> cell = new TableCell<T, Long>() {
private final Text text = new Text();
@Override
protected void updateItem(final Long item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || (long) item <= 0) {
setText(null);
setGraphic(null);
return;
}
text.setText(FileTools.showFileSize((long) item));
setGraphic(text);
}
};
return cell;
}
@Override
public TableCell<T, Boolean> call(TableColumn<T, Boolean> param) {
final ImageView imageview = new ImageView(ControlStyle.getIcon("iconYes.png"));
imageview.setPreserveRatio(true);
imageview.setFitWidth(AppVariables.iconSize);
imageview.setFitHeight(AppVariables.iconSize);
TableCell<T, Boolean> cell = new TableCell<T, Boolean>() {
@Override
public void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || !((boolean) item)) {
setText(null);
setGraphic(null);
return;
}
// setGraphic(AppVariables.getTrueImage());
// setText(AppVariables.message("True"));
// setGraphic(null);
setGraphic(imageview);
setText(null);
}
};
return cell;
}
public ImportDefinition createDefinition() {
RowFilter rf = rowFilter;
if (filter == null || filter.isEmpty()) {
rf = null;
} else {
rf.setColumns(currentColumnLabels);
}
final ImportDefinition definition = new ImportDefinition(1, rf);
for (final TableColumn<TableRow, ?> column : sampleDataView.getColumns()) {
final ImportTableColumn importTableColumn = (ImportTableColumn) column;
final AttributeNode attributeNode = importTableColumn.getAttributeNode();
if (attributeNode != null) {
// We added an artificial column at the beginning of the table ("Row"),
// so we need to subtract 1 to allow for that offset.
final ImportAttributeDefinition attributeDefinition = new ImportAttributeDefinition(importTableColumn.getColumnIndex() - 1, attributeNode.getAttribute(), attributeNode.getTranslator(), attributeNode.getDefaultValue(), attributeNode.getTranslatorParameters());
definition.addDefinition(attributeNode.getAttributeList().getAttributeType(), attributeDefinition);
}
}
sourceVertexAttributeList.createDefinition(definition);
destinationVertexAttributeList.createDefinition(definition);
transactionAttributeList.createDefinition(definition);
return definition;
}
@SuppressWarnings("unchecked")
public TagEditorPane(Map<String, String> tags) {
tagTable.setEditable(true);
tagTable.setPrefHeight(200);
tagTable.setPrefWidth(200);
final TableColumn<Tag, String> nameCol = new TableColumn<>("Name");
nameCol.setCellValueFactory(new PropertyValueFactory<Tag, String>("name"));
nameCol.setCellFactory(TextFieldTableCell.<Tag> forTableColumn());
nameCol.setOnEditCommit((t) -> {
t.getTableView().getItems().get(t.getTablePosition().getRow()).setName(t.getNewValue());
});
final TableColumn<Tag, String> valueCol = new TableColumn<>("Value");
valueCol.setCellFactory(TextFieldTableCell.<Tag> forTableColumn());
valueCol.setCellValueFactory(new PropertyValueFactory<Tag, String>("value"));
valueCol.setOnEditCommit((t) -> {
t.getTableView().getItems().get(t.getTablePosition().getRow()).setValue(t.getNewValue());
});
tagTable.getColumns().addAll(nameCol, valueCol);
final ObservableList<Tag> data = FXCollections.observableArrayList();
for (final Entry<String, String> entry : tags.entrySet())
data.add(new Tag(entry.getKey(), entry.getValue()));
tagTable.setItems(data);
tagTable.setOnMouseClicked((event) -> {
if (event.getClickCount() == 2) {
data.add(new Tag("", ""));
}
});
getChildren().add(tagTable);
}
/**
* Extract any current table sort information and save this information. See
* other saveSortDetails for reason this is done.
*/
private void saveSortDetails() {
if (table.getSortOrder() != null && table.getSortOrder().size() > 0) {
// A column was selected to sort by, save its name and direction
saveSortDetails(table.getSortOrder().get(0).getText(), table.getSortOrder().get(0).getSortType());
} else {
// no column is selected, clear any previously stored information.
saveSortDetails("", TableColumn.SortType.ASCENDING);
}
}
private void setDateColumnCellFactory() {
dateColumn.getStyleClass().add("first-column");
dateColumn.setCellValueFactory((addressListItem) ->
new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
dateColumn.setMaxWidth(200);
dateColumn.setMinWidth(dateColumn.getMaxWidth());
dateColumn.setCellFactory(
new Callback<>() {
@Override
public TableCell<TransactionsListItem, TransactionsListItem> call(TableColumn<TransactionsListItem,
TransactionsListItem> column) {
return new TableCell<>() {
@Override
public void updateItem(final TransactionsListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty) {
setGraphic(new AutoTooltipLabel(item.getDateString()));
} else {
setGraphic(null);
}
}
};
}
});
}