FXML的相关摘录:
<TableView fx:id="events">
<columns>
<TableColumn fx:id="eventTime" text="Time"/>
<TableColumn fx:id="eventType" text="Event type"/>
<TableColumn fx:id="eventRule" text="Matcher"/>
<TableColumn fx:id="eventIndex" text="Index"/>
<TableColumn fx:id="eventDepth" text="Depth"/>
<TableColumn fx:id="eventPath" text="Matcher path"/>
</columns>
</TableView>
eventTime
列定义为:
@FXML
TableColumn<TraceEvent, Long> eventTime;
我这样绑定了属性:
public DefaultTraceTabView(final TraceTabUi ui)
{
this.ui = ui;
bindColumn(ui.eventTime, "nanoseconds");
// other non relevant code
}
//
private static <T> void bindColumn(final TableColumn<TraceEvent, T> column,
final String propertyName)
{
column.setCellValueFactory(new PropertyValueFactory<>(propertyName));
}
好的,这有效;我可以对列进行排序,但显示是......嗯......纳秒。
我希望在列中显示的内容是98343420
,而不是98 ms, 343.420 μs
。{{1}}。但保持为属性定义的排序顺序......
我如何实现这一目标?
答案 0 :(得分:0)
回答自己......
在this link上找到解决方案:
ui.eventTime.setCellFactory(param -> new TableCell<TraceEvent, Long>()
{
@Override
protected void updateItem(final Long item, final boolean empty)
{
super.updateItem(item, empty);
setText(empty ? null : nanosToText(item));
}
});
和nanosToText()
是一种符合其名称的方法。