Javafx 2 如何在JavaFX中侦听调整大小事件

Javafx 2 如何在JavaFX中侦听调整大小事件,javafx-2,Javafx 2,在JavaFX2.1中,如何检测场景或舞台的大小变化?我找不到此事件的任何事件处理程序。有heightProperty和widthProperty。您可以使用这些属性进行绑定,或向其添加侦听器 public void start(Stage stage) { Scene scene = new Scene(new Group(), 300, 200); stage.setScene(scene); stage.titleProperty().bind(

在JavaFX2.1中,如何检测场景或舞台的大小变化?我找不到此事件的任何事件处理程序。

heightProperty
widthProperty
。您可以使用这些属性进行绑定,或向其添加侦听器

public void start(Stage stage) {
    Scene scene = new Scene(new Group(), 300, 200);
    stage.setScene(scene);

    stage.titleProperty().bind(
            scene.widthProperty().asString().
            concat(" : ").
            concat(scene.heightProperty().asString()));

    stage.show();
}

或者参见下一个示例:

重新调整场景大小后执行动作的方法可以执行以下操作:

(注意:也许有更好的方法可以做到这一点,对我来说,它完成了任务)

final Stage primaryStage=getStage()//从某处获取您的舞台
//创建一个侦听器
最终的ChangeListener侦听器=新的ChangeListener()
{
final Timer=new Timer();//使用计时器调用resize方法
TimerTask task=null;//定义延迟后要执行的任务
最后长延迟时间=200;/或延迟,以考虑操作完成。
@凌驾

公共虚空改变了(observeValue这太老了,太基本了,但它可能会帮助像我这样的noob

可以将侦听器添加到宽度和高度属性

stage.heightProperty().addListener(e ->{
    handle....
});

stage.widthProperty().addListener(e ->{
    handle....
});

加上一个用于解决计时器任务。非常好;)这不会使应用程序在关闭后仍然运行吗?谢谢你发布你的解决方案。+Jacks你可以在构造函数中将计时器设置为deamon,这应该可以解决问题。顺便说一句,这个答案真的应该发布在这里:Sergey,你能说当用户释放鼠标左键时,是否有一个解决方案来获得舞台调整事件吗?有Chris的解决方案只允许减少事件数量,但不允许只获得一个事件。@PavelK请单独提出一个问题,提供更多细节。我不明白您想要实现什么。谢谢您的回答。请看正确的。但Chris的解决方案也使用了这一点。此外,他的解决方案设法减少了事件数量e更改的数量。在您的情况下,侦听器中的代码至少会运行两次,在他的版本中只运行一次。@GunnarBernstein同意,这似乎是两年前在一个简单的GUI中运行的简单方法
stage.heightProperty().addListener(e ->{
    handle....
});

stage.widthProperty().addListener(e ->{
    handle....
});