【发布时间】:2012-01-10 14:17:43
【问题描述】:
如何删除 JavaFX 舞台按钮(最小化、最大化、关闭)?根据Stage 方法找不到任何东西,所以我应该在舞台上使用样式吗?这是实现对话框窗口的必要条件,如Error、Warning、Info。
【问题讨论】:
标签: javafx-2
如何删除 JavaFX 舞台按钮(最小化、最大化、关闭)?根据Stage 方法找不到任何东西,所以我应该在舞台上使用样式吗?这是实现对话框窗口的必要条件,如Error、Warning、Info。
【问题讨论】:
标签: javafx-2
你可以做到这一点,你在你的舞台对象上调用以下方法
stage.initModality(Modality.APPLICATION_MODAL); // makes stage act as a modal
stage.setMinWidth(250); // sets stage width
stage.setMinHeight(250); // sets stage height
stage.setResizable(false); // prevents resize and removes minimize and maximize buttons
stage.showAndWait(); // blocks execution until the stage is closed
【讨论】:
如果您只想禁用最大化按钮,请使用:
stage.resizableProperty().setValue(Boolean.FALSE);
或者如果你想禁用最大化和最小化,除了近距离使用
stage.initStyle(StageStyle.UTILITY);
或者如果你想删除所有三个然后使用
stage.initStyle(StageStyle.UNDECORATED);
【讨论】:
我在这里找到了这个答案 --> http://javafxportal.blogspot.ie/2012/03/to-remove-javafx-stage-buttons-minimize.html 我们可以做到:
enter code here
@Override
public void start(Stage primaryStage) {
primaryStage.initStyle(StageStyle.UNDECORATED);
Group root = new Group();
Scene scene = new Scene(root, 100, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
【讨论】:
我遇到了同样的问题,目前在 javafx 中似乎无法使用未装饰但可拖动/标题的窗口(为了美观)。最接近的方法是消费 close 事件。
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
event.consume();
}
});
如果你喜欢 lambdas
stage.setOnCloseRequest(e->e.consume());
【讨论】:
stage.initStyle(StageStyle.DECORATED);
stage.setResizable(false);
【讨论】:
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
【讨论】:
primaryStage.setResizable(false);
【讨论】:
primaryStage.initStyle(StageStyle.UTILITY);
【讨论】:
setOnCloseRequestprimaryStage.setOnCloseRequest(new EventHandler你只需要设置一个舞台的风格。试试这个例子:
package undecorated;
import javafx.application.Application;
import javafx.stage.StageStyle;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class UndecoratedApp extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.initStyle(StageStyle.UNDECORATED);
Group root = new Group();
Scene scene = new Scene(root, 100, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
}
在学习JavaFX 2.0时these examples很有帮助。
【讨论】:
primaryStage.initStyle(StageStyle.UNDECORATED); 创建一个没有标题的窗口。如何仅删除最小化/最大化/关闭按钮?