ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaFX(二)了解窗口和场景类

2022-07-27 00:36:27  阅读:172  来源: 互联网

标签:场景 窗口 javafx JavaFX scene primaryStage import public Stage


 

JavaFX(一)入门介绍


 

1各类窗口,窗口之间的交互

五种窗口类型

DECORATED,
UNDECORATED,
TRANSPARENT,
UTILITY,
UNIFIED

 1 package com.fxUnit03;
 2 
 3 import javafx.application.Application;
 4 import javafx.stage.Modality;
 5 import javafx.stage.Stage;
 6 import javafx.stage.StageStyle;
 7 
 8 
 9 /**
10  *  @Name FX learning unit 3
11  *  @Description 各类窗口,窗口之间的交互
12  *  @Author Fancy
13  *  @return 2022/6/13
14  *  @Version 1.0
15  */
16 public class fxTest3 extends Application {
17     public static void main(String[] args) {
18         launch(args);
19     }
20 
21     @Override
22     public void start(Stage primaryStage) throws Exception {
23         //对话框,是/否?
24         Stage s1 = new Stage(StageStyle.UTILITY);
25         s1.setTitle("close");
26 
27         //设置为APPLICATION_MODAL则必须先关掉该窗口,才能使用其它窗口
28         s1.initModality(Modality.APPLICATION_MODAL);
29         s1.setWidth(200);
30         s1.setHeight(200);
31         s1.setX(800);
32         s1.setY(500);
33 
34         //常用窗口类型
35         Stage s2 = new Stage(StageStyle.DECORATED);
36         s2.setTitle("s2");
37         //s2窗口拥有s1
38         s2.initOwner(s1);
39         s2.initModality(Modality.WINDOW_MODAL);
40         s1.setAlwaysOnTop(true);
41 
42         s2.show();
43         s1.show();
44     }
45 }

2 窗口的线程名

start方法线程名JavaFX Application Thread
结束后线程名JavaFX Application Thread
线程名JavaFX Application Thread

 1 package com.fxUnit04;
 2 
 3 import javafx.application.Application;
 4 import javafx.application.Platform;
 5 import javafx.stage.Stage;
 6 import javafx.stage.StageStyle;
 7 
 8 /**
 9  *  @Name
10  *  @Description 多线程
11  *  @Author Fancy
12  *  @return 2022/6/14
13  *  @Version 1.0
14  */
15 public class fxTest4 extends Application {
16     public static void main(String[] args) {
17         launch(args);
18     }
19     @Override
20     public void start(Stage primaryStage) throws Exception {
21         System.out.println("start方法线程名"+Thread.currentThread().getName());
22 
23         Stage s1 = new Stage(StageStyle.UNIFIED);
24 
25         Platform.runLater(new Runnable() {
26             @Override
27             public void run() {
28                 System.out.println("线程名"+Thread.currentThread().getName());
29                 int i = 1;
30                 while (i <= 10){
31                     try {
32                         Thread.sleep(1000);
33                     } catch (InterruptedException e) {
34                         e.printStackTrace();
35                     }
36                     System.out.println("i = "+i);
37                     i = i+1 ;
38 
39                 }
40             }
41         });
42         s1.setTitle("test4");
43         s1.show();
44 
45         System.out.println("结束后线程名"+Thread.currentThread().getName());
46     }
47 }

3 场景类Scene和Group组

package com.fxUnit06;

import javafx.application.Application;
import javafx.application.HostServices;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;

import java.net.URL;

public class fxTest6 extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        //打开网页
        HostServices host = getHostServices();
        host.showDocument("https://www.cnblogs.com/fancy2022/");
        //获取本地图片路径
        URL url = getClass().getClassLoader().getResource("img/bv_Logo.png");
        String path = url.toExternalForm();

        Button button = new Button("登录");
        button.setPrefSize(40,40);
        //布局类管理button
        Group group = new Group();
        //添加组件
        group.getChildren().add(button);
        Scene scene = new Scene(group);

        //在按钮上设置鼠标变型
        button.setCursor(Cursor.CLOSED_HAND);

        //将scene关联到主窗口上
        primaryStage.setScene(scene);

        primaryStage.setTitle("fxTest6");
        primaryStage.setHeight(800);
        primaryStage.setWidth(1000);


        primaryStage.show();



    }
}
package com.fxUnit07;

import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;


/**
 *  @Name test7
 *  @Description group
 *  @Author Fancy
 *  @return 2022/6/22
 *  @Version 1.0
 */
public class fxTest7 extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {

        Button b1 = new Button("按钮1");
        Button b2 = new Button("按钮2");
        Button b3 = new Button("按钮3");

/*        //设置按钮的大小
        b1.setPrefSize(50,30);
        b2.setPrefSize(50,30);
        b3.setPrefSize(50,30);*/


        //设置按钮的位置
        b1.setLayoutX(0);
        b2.setLayoutX(100);
        b3.setLayoutX(200);

        Group group = new Group();

        group.getChildren().addAll(b1,b2,b3);

        //操作三个子节点
        Object[] obj = group.getChildren().toArray();
        for (Object o : obj) {
            Button bu = (Button) o;
            bu.setPrefSize(50,50);
        }

        //监听
        group.getChildren().addListener(new ListChangeListener<Node>() {
            @Override
            public void onChanged(Change<? extends Node> c) {
                System.out.println("当前子组件数量= "+c.getList().size());
            }
        });

        //设置group的透明度
        group.setOpacity(0.8);

        //判断组件有无子组件
        System.out.println(group.contains(0,0));

        Scene scene = new Scene(group);
        //将scene关联到主窗口上
        primaryStage.setScene(scene);

        primaryStage.setTitle("fxTest6");
        primaryStage.setHeight(800);
        primaryStage.setWidth(1000);


        primaryStage.show();
    }
}

代码来源:B站UP:Aimls

https://space.bilibili.com/5096022/channel/collectiondetail?sid=210809

搜索

复制

标签:场景,窗口,javafx,JavaFX,scene,primaryStage,import,public,Stage
来源: https://www.cnblogs.com/fancy2022/p/16523180.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有