stage窗口学习

Posted by     "麦子" on Saturday, 2021年12月18日

示例

 
package com.maizi.javafxdemo.stage学习;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.image.Image;
import javafx.stage.Stage;

/**
 * @Description: 方法说明....
 * @Date: 2021-10-25 20:51:46
 * @param {*}
 * @return {*}
 * @LastEditors: Do not edit
 */
public class FX_Stage extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        primaryStage.setTitle("学习stage");
        primaryStage.getIcons().add(new Image("file:/icon.png"));

        primaryStage.setIconified(false); // false: 最大化 和 true: 最小化

        primaryStage.setMinWidth(800);
        primaryStage.setMinHeight(500);

        primaryStage.setResizable(true); // false: 设置不可改变窗口

        primaryStage.setX(1000);
        primaryStage.setY(500);

        // 动态获取高度和宽度
        primaryStage.heightProperty().addListener(new ChangeListener<Number>() {

            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

                System.out.println("height: " + oldValue + " height: " + newValue);

            }

        });

        primaryStage.widthProperty().addListener(new ChangeListener<Number>() {

            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

                System.out.println("width: " + oldValue + " width: " + newValue);

            }

        });
      
       // 窗口关闭事件, 还有其他的一些事件处理。 
       primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {

            @Override
            public void handle(WindowEvent event) {

                System.out.println("关闭");
            }

        });

        // 设置全屏, 必须设置scene(场景), 在上面可以设置为多个布局
        // primaryStage.setFullScreen(true);
        // primaryStage.setScene(new Scene(new Group()));

        primaryStage.show();

        // 获取高度 和 宽度
        double width = primaryStage.getWidth();
        double height = primaryStage.getHeight();

        System.out.println("width: " + width + " height: " + height);

    }

}

        primaryStage.setOpacity(1); // 设置透明度, 0:完成透明

        primaryStage.setAlwaysOnTop(true); // 你点击其他窗口,永远在最上面。

        primaryStage.xProperty().addListener(new ChangeListener<Number>() { // 获取窗口的,离屏幕左上角的位置

            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

                System.out.println("old width:" + oldValue + " new width:" + newValue);
            }

        });

        // property 属性有很多方法。

package com.maizi.javafxdemo.stage学习;

import javafx.application.Application;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class Fx_Stage_03 extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        Stage s1 = new Stage();
        s1.setTitle("窗口1号");

        s1.show();

        Stage s2 = new Stage();
        s2.setTitle("窗口2号");

        s2.initOwner(s1);
        s2.initModality(Modality.WINDOW_MODAL); // 在window中, 点击的时候,会出现window的时候会一闪一闪的。
        s2.show();

        Stage s3 = new Stage();
        s3.setTitle("窗口3号");
        // s3.initStyle(StageStyle.DECORATED); // 默认
        // s3.initStyle(StageStyle.TRANSPARENT); // 透明
        // s3.initStyle(StageStyle.UNDECORATED);// 没有关闭 ,扩大, 缩小的 按钮
        // s3.initStyle(StageStyle.UNIFIED); // 和第一个没什么区别
        // s3.initStyle(StageStyle.UTILITY); // 只有关闭, 没有扩大和缩小

        // s3.initModality(Modality.APPLICATION_MODAL); // 这个模态,
        // 会让其他的窗口不被聚焦,只有当前这个窗口被关闭了,其他的才可以聚焦。
        s3.show();

        // Platform.exit(); // 直接全部退出

    }

    @Override
    public void stop() throws Exception {
        super.stop();
        System.out.println("平台全部退出");
    }

}

stage

Stage是用于修改外观,标题,位置等的对象。 window,Scene用于布局和处理事件等。

「真诚赞赏,手留余香」

真诚赞赏,手留余香

使用微信扫描二维码完成支付