JavaFX场景入门(上)

简介: JavaFX场景入门

JAVAFX



jdk1.8以上引入javafx类库



JDK11+JAVAFX(eclipse)


方式一


方式二


直接引入


避免


另一种编写方式


小知识点


setHgrow或setVgrow、需要精确布局时,应重写layoutChildren()值摆放每一个子节点


setHgrow(hbox,Priority.ALWAYS);


javafx有4中控件来表示多项数据


ListView:列表


TreeView:树


TableView:表格


TreeTableView:多列列表


环境配置


舞台Stage


舞台(场景(布局(控件)))


JavaFX需要继承:javafx.application.AppLication


需要实现方法start


创建main方法 调用launch


需要stage调用show方法


stage.setOpacity(0.9);//设置透明度  0-1


//X,Y监听事件

stage.xProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
           System.out.println("X窗口现在坐标:"+newValue);
           System.out.println("X窗口之前坐标:"+oldValue);
        }
     });
     stage.yProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
           System.out.println("Y窗口现在坐标:"+newValue);
           System.out.println("Y窗口之前坐标:"+oldValue);
        }
     });
//创建多个窗口,设置模式
Stage s1 =new Stage();
     //s1.initStyle(StageStyle.TRANSPARENT);//透明的
     s1.initStyle(StageStyle.UNIFIED);
     s1.show();
     Stage s2 =new Stage();
     s2.setTitle("5");
     s2.initStyle(StageStyle.UTILITY);
     //s2.initStyle(StageStyle.UNDECORATED);//白色不带装饰
     s2.show();
// APPLICATION_MODAL设置初始化模态
S2关闭之后才能操作其他窗口
Stage s1 =new Stage();
     s1.setTitle("s1");
     s1.show();
     Stage s2 =new Stage();
     s2.initModality(Modality.APPLICATION_MODAL);
     s2.setTitle("s2");
     s2.show();
// WINDOW_MODAL设置初始化模态
Stage s1 =new Stage();
     s1.setTitle("s1");
     Stage s2 =new Stage();
     //s2.initModality(Modality.APPLICATION_MODAL);
     s2.setTitle("s2");
     //设置s2和s1关联
     s1.initOwner(s2);
     s1.initModality(Modality.WINDOW_MODAL);
     s2.show();
     s1.show();


案例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
public class javafx03tage extends Application {
    public  static  Stage stage;
    @Override
    public void start(Stage stage) throws Exception {
        //让舞台赋值给静态属性
        javafx03tage.stage =stage;
        stage.setTitle("小应用测试");
        //创建布局
        HBox hbox = new HBox();
        //创建控件
        TextField textField = new TextField();
        Button button = new Button("确定");
        button.setOnAction((e)->{
            String a = textField.getText();
            System.out.println("输入的内容为:"+a);
        });
        Button regist = new Button("注册");
        //写法1
//        regist.setOnAction((e)->{
//            regis();
//        });
//        写法2
        regist.setOnAction(e->javafx03tage.regis());
        //将控件加入布局
        hbox.getChildren().addAll(textField,button,regist);
//        hbox.getChildren().add(textField);
//        hbox.getChildren().add(button);
        //将布局加入场景
        Scene scene = new Scene(hbox,300,200);
        //将场景放入舞台
        stage.setScene(scene);
        stage.show();
    }
    public static void regis(){
        //创建垂直布局
        VBox vbox = new VBox();
        //创建控件
        TextField t1 = new TextField();
        TextField t2 = new TextField();
        Button b1 = new Button("注册");
        vbox.getChildren().addAll(t1,t2,b1);
        Scene scene = new Scene(vbox,300,200);
        javafx03tage.stage.setScene(scene);
    }
    public static void main(String[] args) {
        launch();
    }
}


platform、screen类


Platform类

public class platformcalss extends Application{
   public static void main(String[] args) {
     launch(args);
   }
   @Override
   public void start(Stage primaryStage) throws Exception {
     //设置为false,当窗口关闭,程序仍然运行,如要关闭则Platform.exit(); 若为true,窗口关闭,程序关闭
     //Platform.setImplicitExit(false);
     //是否支持3D效果
     boolean b = Platform.isSupported(ConditionalFeature.SCENE3D);
     Platform.runLater(new Runnable() {
        @Override
        public void run()
        {
           System.out.println("run方法里的线程名字:"+Thread.currentThread().getName());
           //可以在这里更新组件
        }
     });
   }
}


screen类

public class Screencalss extends Application{
   public static void main(String[] args) {
     launch(args);
   }
   @Override
   public void start(Stage primaryStage) throws Exception {
     //获取屏幕
     Screen screen = Screen.getPrimary();
     //获取屏幕全部宽度,高度
     Rectangle2D rec1= screen.getBounds();
     //获取可视范围的宽度,高度
     Rectangle2D rec2= screen.getVisualBounds();
     System.out.println(rec1.getWidth());
     System.out.println(rec2.getWidth());
     Platform.exit();
   }
}


Scene场景类


scene类电脑屏幕相关


JavaFX场景入门(下):https://developer.aliyun.com/article/1431708

目录
相关文章
QGS
|
4月前
|
容器
JavaFX场景入门(下)
JavaFX场景入门
QGS
29 0
|
11月前
|
Java Linux API
|
12月前
|
Java
|
12月前
|
安全 Java
javaFx 安全开发 三
javaFx 安全开发
|
12月前
|
IDE Java 开发工具
|
12月前
|
SQL 安全 小程序
javaFx 工具开发
javaFx 工具开发
QGS
|
12月前
|
Java
JAVAFX+SceneBuilder基础入门
环境:JDK1.8+IDEA fxml载入项目 通过SceneBuilder编写好布局,生成fxml文件。
QGS
120 0
QGS
JAVAFX+SceneBuilder基础
记JAVAFX+SceneBuilder基础
QGS
93 0
JAVAFX+SceneBuilder基础
|
Java Maven 图形学
JavaFx教程(一) 基本概念
JavaFx教程(一) 基本概念
JavaFx教程(一) 基本概念
|
Web App开发 前端开发 JavaScript
JavaFX——(第一篇:介绍篇)
什么是JavaFX JavaFx平台是一个富客户端平台解决方案,它能够使用应用程序开发人员轻松的创建跨平台的富客户端应用程序。它构建在Java技术的基础之上,JavaFX平台提供了一组丰富的图形和媒体API与高性能硬件加速图形和媒体引擎,简化开发数据驱动的企业客户端应用程序。
1760 0