[英]Updating UI Components of One Stage Based On Event in Another Stage in JavaFX
我有兩個Stages
,例如Stage1和Stage2。 Stage1有一個ListView
和一個Button
。 Stage1上的OnPressing按鈕上,我打開一個對話框,即Stage2。 Stage2具有TextField
和一個Button
。 如果我在TextField中輸入字符串並單擊按鈕,則關閉上一個Stage1。 現在,我要在單擊stage2按鈕后更新ListView。
當我按下按鈕打開對話框時,我沒有關閉Stage1。
我在stage2上使用showAndWait函數
window.showAndWait();
並使用關閉它
stage.close();
以上是階段的一部分。 我還想根據stage2中的按鈕刷新其他組件。
有人可以建議我這樣做嗎?
這取決於您使用的是FXML還是僅進行編碼。
但是在以下兩種方式中,任何一種方式都是相同的:
您需要將兩個階段都包含在變量中。 然后添加一個onAction
事件偵聽器,它將在其中觸發您的階段2為stage2.showAndWait()
。
至於文本字段和列表。 您需要使用簡單的arrayList.add();
添加到該列表arrayList.add();
然后將新列表傳遞到您的listView FXController.ObservableArrayList(arrayList)
然后更新或“刷新”該listView,由於沒有方法可以“刷新”,而是通過設置listView.setVisible(false);
;,這是不確定的listView.setVisible(false);
並且listView.setVisible(true)
做到了!!
如果您希望它是“自動的”,則必須在onAction
事件中添加所有內容!
祝好運
如果您有代碼,我會提供一個更好的示例,但我想我已經解決了所有問題。
我接受@James_D的建議並“刷新”了ListView
。 我打算將一個項目添加到ListView
並根據Button
事件對其進行更新。
如果項目成功添加到列表中,則在controller
處理了按鈕事件,並調用了refreshListView()。 基本上,我意識到,一旦關上stage2,控件便會返回給Stage1控制器。 所以我寫了下面的代碼:
@FXML
private void handleAddNewItem(ActionEvent event) throws IOException {
boolean flag = mNewBox.display();
if(flag==true){
refreshListView();
}
}
public void refreshListView() {
List<String> list = new ArrayList<String>();
list = singleton.getFiles();
items = FXCollections.observableArrayList(list);
itemsListView.setItems(items);
}
感謝您的建議!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.