当应用程序窗口失去焦点时,我需要触发一个事件。我将如何在窗口上设置一个监听器?
问问题
115 次
1 回答
1
正如上面的评论所暗示的,简单地听你的舞台focusedProperty
是正确的方法。
请参阅下面的简单示例应用程序以了解其工作原理:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class WindowFocusExample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Simple interface
VBox root = new VBox(5);
root.setPadding(new Insets(10));
root.setAlignment(Pos.CENTER);
// A label to show our current focus status
Label label = new Label("Window has focus.");
// Let's listen for our window to get/lose focus
primaryStage.focusedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
label.setText("Window HAS focus.");
} else {
label.setText("Window has LOST focus!");
}
System.out.println(label.getText());
});
root.getChildren().add(label);
// Show the Stage
primaryStage.setWidth(300);
primaryStage.setHeight(300);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
于 2019-01-23T03:35:03.460 回答