在我的MAC应用程序中,在一个用例中,我向用户提示一个窗口并给他2个选项(比如按钮保存和取消)。我想强制用户选择2个按钮中的任何一个来关闭窗口。
但是目前我发现如果用户在窗口有焦点时点击“Command + w”键,窗口就会关闭。在.xib资源文件中,我取消选中“关闭”选项,但只禁用窗口UI中的关闭选项。
如何确保我的窗口忽略“Command + w”键并保持原样而不关闭。
还尝试通过在awakeFromNib方法中添加以下代码来删除通知,但没有帮助。
[[NSNotificationCenter defaultCenter] removeObserver:NSWindowWillCloseNotification ];
还试图实现“windowShouldClose”委托方法并返回NO,但是从不调用此方法。文档也说这种方法不可靠。
答案 0 :(得分:0)
您应该使用package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXMLLoader;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Main.fxml"));
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
进行此类提示,可能在窗口中作为工作表运行。这样可以避免关闭它的问题。
在任何情况下,窗口的委托都可以实现NSAlert
来控制是否允许窗口关闭。您可以通过声明它采用-windowShouldClose:
协议并将窗口的NSWindowDelegate
出口连接到该对象来使对象(通常是窗口控制器)成为其委托。