afterburner.fx 从节点获取视图
afterburner.fx get view from node
几天来我一直在努力掌握afterburner.fx,但我无法弄清楚这个问题。请帮忙
选项卡窗格中有三个选项卡
tabPane.getTabs().get(0).setContent(new FirstView().getView());
tabPane.getTabs().get(1).setContent(new SecondView().getView());
tabPane.getTabs().get(2).setContent(new ThirdView().getView());
这些没有命名为 firstview、secondview 等。它是为了演示...
现在每个视图都有一个重新加载方法:
firstView.reload()
secondView.reload()
thirdView.reload()
并且我已经为选项卡更改设置了一个侦听器,以便我可以在这些视图进入视图后重新加载它们
tabPane.getSelectionModel().selectedItemProperty().addListener((o, oldValue, newValue) -> {
newValue.getView().reload(); // of course this cant be done like this
})
如何在选项卡进入视图后重新加载它的视图?
我设法找到了解决方法。我制作了两个新的 类,一个扩展了 FXMLView,另一个扩展了 Tab。
public abstract class ReloadableView extends FXMLView {
public abstract void reload();
}
和
public class ReloadingTab<V extends ReloadableView> extends Tab {
private V view;
public ReloadingTab(String text, V view) {
super(text, view.getView());
this.view = view;
}
public V getView() {
return view;
}
}
终于添加了监听器
tabPane.getSelectionModel().selectedItemProperty().addListener((o, oldValue, newValue) -> {
ReloadingTab tab = (ReloadingTab) newValue;
tab.getView().reload();
});
抱歉,如果我的问题没有任何意义。我希望有人觉得这很有用。
您可以将侦听器添加到各个选项卡而不是选项卡窗格:
FirstView firstView = new FirstView();
Tab tab0 = tabs.getTabs().get(0);
tab0.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
if (isSelected) {
firstView.reload();
}
});
tab0.setContent(firstView.getView());
// etc
几天来我一直在努力掌握afterburner.fx,但我无法弄清楚这个问题。请帮忙
选项卡窗格中有三个选项卡
tabPane.getTabs().get(0).setContent(new FirstView().getView());
tabPane.getTabs().get(1).setContent(new SecondView().getView());
tabPane.getTabs().get(2).setContent(new ThirdView().getView());
这些没有命名为 firstview、secondview 等。它是为了演示...
现在每个视图都有一个重新加载方法:
firstView.reload()
secondView.reload()
thirdView.reload()
并且我已经为选项卡更改设置了一个侦听器,以便我可以在这些视图进入视图后重新加载它们
tabPane.getSelectionModel().selectedItemProperty().addListener((o, oldValue, newValue) -> {
newValue.getView().reload(); // of course this cant be done like this
})
如何在选项卡进入视图后重新加载它的视图?
我设法找到了解决方法。我制作了两个新的 类,一个扩展了 FXMLView,另一个扩展了 Tab。
public abstract class ReloadableView extends FXMLView {
public abstract void reload();
}
和
public class ReloadingTab<V extends ReloadableView> extends Tab {
private V view;
public ReloadingTab(String text, V view) {
super(text, view.getView());
this.view = view;
}
public V getView() {
return view;
}
}
终于添加了监听器
tabPane.getSelectionModel().selectedItemProperty().addListener((o, oldValue, newValue) -> {
ReloadingTab tab = (ReloadingTab) newValue;
tab.getView().reload();
});
抱歉,如果我的问题没有任何意义。我希望有人觉得这很有用。
您可以将侦听器添加到各个选项卡而不是选项卡窗格:
FirstView firstView = new FirstView();
Tab tab0 = tabs.getTabs().get(0);
tab0.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
if (isSelected) {
firstView.reload();
}
});
tab0.setContent(firstView.getView());
// etc