TableView自动更新无法正常工作

时间:2017-05-14 01:59:26

标签: java javafx

我有一个带有一个名为"显示"的列的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更新。

我在这里做错了什么?

0 个答案:

没有答案