这个问题很简单:是否可能接收只触发一次的调整大小事件,即使
我有一个应用程序,以窗口像素为单位计算图像。当窗口大小调整时,图像会重新计算。问题是,当监听
一个简单的例子:
但我只希望得到以下输出结果:
width
和height
同时更改?我有一个应用程序,以窗口像素为单位计算图像。当窗口大小调整时,图像会重新计算。问题是,当监听
widthProperty()
和heightProperty()
时,即使width
和height
在同一个循环周期内更改,也会触发两个事件。这导致一个多余的计算。是否有一种方法可以每次更新时监听调整大小事件一次?一个简单的例子:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Group root = new Group();
primaryStage.setScene(new Scene(root));
primaryStage.show();
primaryStage.setWidth(800);
primaryStage.setHeight(800);
primaryStage.widthProperty().addListener((observable, oldValue, newValue) ->
System.out.println("old: (" + oldValue + ", " + primaryStage.getHeight() + "); "
+ "new: (" + newValue + ", " + primaryStage.getHeight() + ")")
);
primaryStage.heightProperty().addListener((observable, oldValue, newValue) ->
System.out.println("old: (" + primaryStage.getWidth() + ", " + oldValue + "); "
+ "new: (" + primaryStage.getWidth() + ", " + newValue + ")")
);
primaryStage.setWidth(400);
primaryStage.setHeight(400);
}
}
这将打印:
old: (800.0, 800.0); new: (400.0, 800.0)
old: (400.0, 800.0); new: (400.0, 400.0)
但我只希望得到以下输出结果:
old: (800.0, 800.0); new: (400.0, 400.0)