我有一个带有一个名为"显示"的列的tableview应该使用SimpleStringProperty绑定自动更新。
这是我的代码(简化):
public void setupTable () {
...
TableColumn displayColumn = new TableColumn( "Display" );
displayColumn.setCellValueFactory (
new PropertyValueFactory <> ( "Display" )
);
...
}
public class Track {
boolean isCurrentTrack = false;
Integer queueIndex = null;
private final StringProperty display = new SimpleStringProperty ( null );
public void setIsCurrentTrack ( boolean isCurrentTrack ) {
this.isCurrentTrack = isCurrentTrack;
updateDisplayString();
}
public void setQueueIndex ( Integer index ) {
queueIndex = index;
updateDisplayString();
}
public void updateDisplayString() {
if ( isCurrentTrack ) {
display.set( "▶" );
} else if ( queueIndex != null ) {
display.set( queueIndex.toString() );
} else {
display.set( null );
}
}
public void setDisplay( String newDisplay ) {
display.set( newDisplay );
}
public String getDisplay () {
return display.get();
}
public StringProperty displayProperty () {
return display;
}
}
当我致电setIsCurrentTrack()
或setQueueIndex()
时,updateDisplayString()
被调用,display.set()
被调用,但我的表格视图无法更新。我必须手动导致更新(例如,通过对表进行排序)以使StringProperty display
更新。
我在这里做错了什么?