jav*_*uns 1 javafx properties listener show javafx-8
我在过去几个月里一直在研究JavaFX.我试图找到一种方法来实现在根窗格/场景中显示特定窗格时触发的侦听器.在Java中,我可以使用JPanel上的ancestorListener实现它,如下所示,但我找不到JavaFX上的等效方法.
JPanel panel = new JPanel ();
panel.addAncestorListener ( new AncestorListener ()
{
public void ancestorAdded ( AncestorEvent event ) {
System.out.println("This panel is shown on screen now");
}
public void ancestorRemoved ( AncestorEvent event ){}
public void ancestorMoved ( AncestorEvent event ){}
} );
Run Code Online (Sandbox Code Playgroud)
你可以观察一下sceneProperty().这将告诉您窗格(或任何其他节点)是否是场景图的一部分:
pane.sceneProperty().addListener((obs, oldScene, newScene) -> {
if (newScene == null) {
// not showing...
} else {
// showing ...
}
});
Run Code Online (Sandbox Code Playgroud)
如果您想要更进一步,并查看窗格是否是显示的窗口中的场景图的一部分,您可以使用EasyBind:
EasyBind.select(pane.sceneProperty())
.select(Scene::windowProperty)
.select(Window::showingProperty)
.orElse(false)
.addListener((obs, wasShowing, isNowShowing) -> {
if (isNowShowing) {
// pane is showing in a window...
} else {
// pane is not showing in a window...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5254 次 |
| 最近记录: |