【问题标题】:How to minimize, maximize and restore down through buttons in java?如何通过java中的按钮最小化,最大化和还原?
【发布时间】:2013-05-16 15:21:29
【问题描述】:

我正在创建一个 JavaFX 2.2 程序,并且需要创建自定义 UI 控件(只是顶部始终存在的最小化-最大化/恢复-关闭按钮)。我需要为此创建自定义按钮,简单到只是创建。

我只需要最小化和最大化/恢复按钮的真实代码(关闭按钮简直是小菜一碟)。最小化按钮将应用程序恢复到任务栏。最大化按钮,好吧,最大化它以适应用户的屏幕,并在最大化时切换到恢复按钮。单击还原按钮后,窗口将还原为其初始大小 (1200x600)。

我尝试在我的 fxml 文件中使用stage.setSize(width, height); 进行还原,但它不起作用(stage 被突出显示为错误,而舞台名称为 stage。)
我用过

    scene.setFill(Color.TRANSPARENT);
    stage.initStyle(StageStyle.TRANSPARENT);

将默认窗口设置为透明。

程序(主文件,不是控制器)是:

    Parent root = FXMLLoader.load(getClass().getResource("fxmlfile.fxml"));       

    Scene scene = new Scene(root);
    scene.setFill(Color.TRANSPARENT);
    stage.initStyle(StageStyle.TRANSPARENT);

    stage.setTitle("Nothing here");
    stage.setScene(scene);
    stage.show();    

关闭动作的控制器文件是:

@FXML
private void exitProgramAction(ActionEvent exitProgramEvent) {        
    System.out.println("Killing program...");
    System.exit(0);
}

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • @AndrewThompson 我的代码几乎没有问题。我是 java 初学者,不知道用于此目的的代码。
  • “这在我的代码中几乎没有问题。” 在这种情况下,SSCCE 的重点是让其他人可以快速测试想法。不过这取决于你..
  • @PratikAnand 创建一个 JavaFX 应用程序。 (最简单的),它可以做所有你不能做的事情。

标签: java custom-controls customization javafx


【解决方案1】:

要将舞台最小化到任务栏,请为您的最小化按钮设置一个类似于此的操作:

    btnMinimize.setOnAction(new EventHandler<ActionEvent>() {

        public void handle(ActionEvent event) {
            Stage stage = (Stage)((Button)event.getSource()).getScene().getWindow();
            // is stage minimizable into task bar. (true | false)
            stage.setIconified(true);
        }
    });

我使用 JavaFX 8,因此我不知道它是否适用于 JavaFX 2.2

【讨论】:

    【解决方案2】:

    在 JavaFX8 中

    @Override
    public void start(Stage stage) {
        //Maximized
        stage.setMaximized(true);
    
        //Restore down
        stage.setMaximized(false);
    }
    

    【讨论】:

    • 同样的想法适用于从最小化状态恢复。
    【解决方案3】:

    你必须在你的主类中调用你的舞台对象。这只能是可以操纵窗口的舞台对象。

    见:http://docs.oracle.com/javafx/2/api/javafx/stage/Stage.html

    【讨论】:

      【解决方案4】:

      最小化代码

        @FXML private void minimizeBut()
      {
          Stage stage=(Stage) minimize.getScene().getWindow();
          stage.setIconified(true);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-02
        • 2019-06-15
        • 2011-02-09
        • 1970-01-01
        • 1970-01-01
        • 2016-03-04
        相关资源
        最近更新 更多