我有两个Stages
,例如Stage1和Stage2。 Stage1有ListView
和Button
。 OnPressing按钮出现在Stage1上,我打开一个对话框,即Stage2。 Stage2有TextField
和Button
。如果我在TextField中输入一个字符串并单击该按钮,我将关闭上一个Stage1。
现在,我想点击stage2按钮后更新ListView。
当我按下按钮打开对话框时,我不会关闭Stage1。
我在stage2上使用showAndWait函数
window.showAndWait();
并使用
关闭它stage.close();
以上是舞台的一部分。我想根据第二阶段的按钮按下刷新其他组件。
有人可以建议我这样做吗?
答案 0 :(得分:0)
这取决于您使用的是FXML还是仅使用编码。
但是在这两种方式中的任何一种方法都是一样的:
你需要在变量中拥有两个阶段。然后添加一个onAction
事件监听器,它将触发您的第2阶段为stage2.showAndWait()
。
textfield和List。您需要使用简单的arrayList.add();
添加到该列表,然后将新列表传递给listView FXController.ObservableArrayList(arrayList)
,然后更新或"刷新" listView它最近有点不确定,因为没有方法可以刷新"但通过设置listView.setVisible(false);
和listView.setVisible(true)
已经完成了诀窍!!
如果你希望它是"自动"您必须在onAction
事件中添加所有内容!
祝你好运
如果你有代码,我会提供一个更好的例子,但我想我已经解决了所有问题。
答案 1 :(得分:0)
我接受了@ James_D的建议,并且#34;刷新"我的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);
}
感谢您的建议!