笔记记录

编写人:老王
时间:2023-04-4
地点:广州


stage其实就是一个窗口,它啥也不是,打开所有windows的程序都会有一个窗口,这个窗口就是javafx里的stage。里面的内容不属于stage,stage就是一个窗口,就这么简单。

  1. package com.jx.test2;
  2. import javafx.application.Application;
  3. import javafx.stage.Stage;
  4. public class Main extends Application {
  5. public static void main(String[] args) {
  6. launch(args);
  7. }
  8. @Override
  9. public void start(Stage primaryStage) {
  10. //如果你不想用它的primaryStage,也可以自己new一个窗口,如下:
  11. Stage stage = new Stage();
  12. stage.show();
  13. }
  14. }

完整的stage代码和各种常见的方法举例:

  1. package javafx.test;
  2. import javafx.application.Application;
  3. import javafx.beans.value.ChangeListener;
  4. import javafx.beans.value.ObservableValue;
  5. import javafx.scene.image.Image;
  6. import javafx.stage.Stage;
  7. public class Main extends Application {
  8. public static void main(String[] args) {
  9. launch(args);
  10. }
  11. @Override
  12. public void start(Stage primaryStage) {
  13. Stage stage = new Stage();
  14. //窗口标题
  15. stage.setTitle("这是JavaFX窗口的标题");
  16. //获取图标,路径记得前面要加file,在项目下新建一个resoures文件,把图片加进去
  17. stage.getIcons().add(new Image("file:resources/logo.png"));
  18. //设置窗口最小化
  19. //stage.setIconified(true);
  20. //设置窗口最大化
  21. //stage.setMaximized(true);
  22. //虚晃一枪,关闭。放在show的下面,显示完后马上关闭,
  23. //如果是放在show的前面,那就是先关闭再展示,就体现不出close的效果
  24. //stage.close();
  25. //设置高和宽,也就是大小
  26. stage.setWidth(500);
  27. stage.setHeight(300);
  28. //设置窗口不能随意拉大拉小,固定窗口大小。默认是true
  29. stage.setResizable(true);
  30. //可拉伸范围
  31. stage.setMaxHeight(600);
  32. stage.setMaxWidth(700);
  33. stage.setMinHeight(200);
  34. stage.setMinWidth(200);
  35. //动态监听
  36. stage.heightProperty().addListener(new ChangeListener<Number>() {
  37. @Override
  38. public void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {
  39. System.out.println("当前的高度为:" + t1.doubleValue());
  40. }
  41. });
  42. stage.widthProperty().addListener(new ChangeListener<Number>() {
  43. @Override
  44. public void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {
  45. System.out.println("当前的宽度为:" + t1.doubleValue());
  46. }
  47. });
  48. stage.show();
  49. // System.out.println("窗口的高为:"+stage.getHeight());
  50. // System.out.println("窗口的宽为:"+stage.getWidth());
  51. }
  52. }

这里要注意一下,获取窗口的宽和高,如果想要获取默认的宽和高要在show方法的后面去get才能获取,否则会报错。如果是自定义的宽和高则直接在show方法之前获取即可。

  1. stage.show();
  2. System.out.println("窗口的高为:"+stage.getHeight());
  3. System.out.println("窗口的宽为:"+stage.getWidth());

图片.png动态监听高度和宽度,这有助于以后拉伸窗口,里面的组件大小跟随改变的一种技术。

  1. //动态监听
  2. stage.heightProperty().addListener(new ChangeListener<Number>() {
  3. @Override
  4. public void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {
  5. System.out.println("当前的高度为:" + t1.doubleValue());
  6. }
  7. });
  8. stage.widthProperty().addListener(new ChangeListener<Number>() {
  9. @Override
  10. public void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {
  11. System.out.println("当前的宽度为:" + t1.doubleValue());
  12. }
  13. });

图片.png