簡體   English   中英

將項目添加到JavaFX時滾動到tableview的底部

[英]JavaFX scroll to bottom of tableview when items are added to it

這里很奇怪,我不太想知道如何解決這個問題。 我有一個tableview,當可觀察列表的偵聽器選擇發生變化時,該表就會填充。 所以這是代碼:

userController.getAuthImpl().listOfMessages.addListener(new ListChangeListener<Message>() {
    @Override
    public void onChanged(ListChangeListener.Change<? extends Message> c) {
        addMessageToTableView(tblvwBottomAdminNotifications, c.getList());
    }
});


public void addMessageToTableView(TableView<Message> tblvw, ObservableList<? extends Message> observableList){
    tblvw.getItems().clear();
    for(Message msg: observableList)
        tblvw.getItems().add(msg);
}
public ObservableList<Message> listOfMessages = FXCollections.observableArrayList(_listOfMessages);

這可以正常工作,並且一旦將項目添加到listOfMessages,表就會自動更新。 我現在想做的是在更新列表視圖時將其滾動到底部。 我嘗試將以下行添加到addMessageToTableView方法:

tblvw.scrollTo(tblvw.getItems().size()-1);

並且還嘗試像這樣將更改偵聽器添加到tableview本身:

tblvwBottomAdminNotifications.getItems().addListener(new ListChangeListener<Message>(){

    @Override
    public void onChanged(javafx.collections.ListChangeListener.Change<? extends Message> c) {
        tblvwBottomAdminNotifications.scrollTo(c.getList().size()-1);

    }

});

但是,以下消息均以相同方式出錯:

線程“ RMI TCP Connection(1)-192.168.56.1”中的異常java.lang.IllegalStateException:在FX應用程序線程上不存在; currentThread = RMI TCP連接(1)-192.168.56.1

我的Google技能是JavaFX抱怨我從一個單獨的線程訪問tableview。 我能理解,但是我應該如何以這樣的方式訪問它:當tableview確實添加了新項目時,它會向下滾動到它?

如果您需要更多信息,請與我們聯系。

怎么樣

Platform.runLater( () -> tblvw.scrollTo(c.getList().size()-1) );

您可以在表視圖本身的“項目”列表中添加一個changelistener,以便在更新時可以被動地滾動自身?

tblvw.getItems().addListener(new ListChangeListener<Message>(){

        @Override
        public void onChanged(javafx.collections.ListChangeListener.Change<? extends Message> c) {
            tblvw.scrollTo(c.getList().size()-1);

        }

    });

因此,您無需將其添加到tblvwBottomAdminNotifications中,而是將其直接添加到tblvw中。 當該表視圖更新時,它將在其偵聽器中調用onChanged方法,並滾動到列表的底部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM