JavaFX 基础介绍

2023-11-02

目录

JavaFX 基础介绍

 代码介绍:

整体结构

场景面板介绍

 FlowPane流失布局

BorderPane边框布局

 控件介绍

Label 文本标签

TextField 输入框

PasswordField 

Button 按钮 

按钮的点击事件

案例分析

新建布局

控件创建与分析

控件绑定

场景绑定

舞台设置

登录事件 

AlertType


JavaFX 基础介绍


JavaFX是用于构建富互联网应用程序的Java库。使用此库编写的应用程序可以跨多个平台一致运行。使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,电视,平板电脑等。要使用java编程语言开发GUI应用程序,程序员依赖于诸如高级窗口工具包(AWT)和Swings之类的库。在JavaFX出现之后,这些java程序开发就可以有效地利用丰富的类库来开发GUI应用程序。

 代码介绍:

public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		// TODO Auto-generated method stub

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

Application是JavaFX程序的入口,任何JavaFX程序程序都要继承该类并且重写start方法通过main方法执行Application的launch()方法。

launch()方法会默认执行init(),start(),stop()方法

方法执行后顺序为:

init()方法 →start()方法→stop()方法

@Override
	public void init() throws Exception {
		// TODO Auto-generated method stub
		super.init();
	}
	@Override
	public void start(Stage primaryStage) {
		// TODO Auto-generated method stub
        
	}
	@Override
	public void stop() throws Exception {
		// TODO Auto-generated method stub
		super.stop();
	}

当start()方法中没写内容时运行时是没有效果的,需要加以下代码:

@Override
	public void start(Stage primaryStage) {
		// TODO Auto-generated method stub
		primaryStage.setTitle("我是fx窗口标题");//设置窗口标题
		primaryStage.show();//让窗口展示出来
	}

方法中的参数primaryStage表示的就是当前该程序的舞台对象。

一定要记得加primaryStage.show();不然完成之后是没有效果的,然后就会怀疑自己代码写错了。

整体结构

 Stage是一个主容器,或者说是舞台,它就是我们通常所认为的窗口(有边,高和宽,还有关闭按钮)。在舞台里面,我们可以放置一个Scene也就是场景,我们可以把Scene理解为子容器,当然你可以切换别的Scene,而在这个Scene里面,我们就可以放置各种各样的控件。

场景面板介绍

布局面板需要和场景搭配使用,如果我们需要将内容显示出来,就需要将内容放到内容对象中,同时也还需要将布局面板与一个场景绑定在一起,再把场景绑定到舞台中,就完成显示了。

舞台(Stage)包含场景(Scene),场景与布局绑定,布局中可以放入多个控件

 FlowPane流失布局

FlowPane它会在一行上排列连续的子组件,并且如果当行填满了以后,则自动将子组件向下推到下一行。

FlowPane flowpane =new FlowPane();

构建了布局之后,我们可以往里面放入对应的组件。

需要注意的是,该布局中可以放入任意多个控件,所以该布局内部使用了List集合来存放多个控件。

flowpane.getChildren()//子元素集合,这是一个List集合,其中存放了该布局下所有的控件

如果想要把一个控件给到该布局,简单来说就是将控件加入该子元素集合:

FlowPane fp=new FlowPane();
		fp.getChildren();//子元素集合这是list集合,其中该集合存放了所有的控件;
		BorderPane bd=new BorderPane();
		Button l1=new Button("按钮一");
		Button l2=new Button("按钮二");
		Button l3=new Button("按钮三");
		Button l4=new Button("按钮四");
		Button l5=new Button("按钮五");
            //将控件添加到该布局的子元素集合中
	    fp.getChildren().add(l1);
		fp.getChildren().add(l2);
		fp.getChildren().add(l3);
		fp.getChildren().add(l4);
		fp.getChildren().add(l5);

当控件填充完成之后,根据之前所述,我们需要将该布局与场景Scene进行绑定

Scene sc = new Scene(flowpane, 230, 100);
//以folwpane布局创建一个场景,大小230*100

同时,需要将场景与主容器进行绑定,才能完成显示

primaryStage.setScene(scene);

展示效果:

 可以通过拉动窗口大小观察的布局的变化

完整代码如下:


	@Override
	public void start(Stage stage) throws Exception {
		// TODO Auto-generated method stub
		FlowPane flowpane=new FlowPane();
		flowpane.getChildren();
		Button b1=new Button("按键一");
		Button b2=new Button("按键二");
		Button b3=new Button("按键三");
		Button b4=new Button("按键四");
		Button b5=new Button("按键五");
		flowpane.getChildren().addAll(b1,b2,b3,b4,b5);
		Scene sc=new Scene(flowpane,300,300);
		stage.setScene(sc);
	stage.show();
	}

BorderPane边框布局

该布局有顶部,底部,左,右与中心区域的五个区域,每个区域只能有一个节点。

我们放入五个按钮到对应的位置:

@Override
	public void start(Stage stage) throws Exception {
		// TODO Auto-generated method stub		
		//新建布局
		BorderPane bor=new BorderPane();
		//新建控件
		Button b1=new Button("中间");
		Button b2=new Button("下面");
		Button b3=new Button("上面");
		Button b4=new Button("左边");
		Button b5=new Button("右边");
		//将控件放入对应的位置
		bor.setCenter(b1);
		bor.setBottom(b2);
		bor.setTop(b3);
		bor.setLeft(b4);
		bor.setRight(b5);
		//为布局生成场景
		Scene sc=new Scene(bor,300,300);
		//将场景绑定到主容器
		stage.setScene(sc);
		//让主容器显示
		stage.show();

 效果展示:

 控件介绍

注意:组件都在javafx.scene.control包里面,切记不要导错包

Label 文本标签

Label label=new label("我是标签文本");

TextField 输入框

TextField textField=new TextField("请输入你的用户名");

PasswordField 

PasswordField pwd = new PasswordField();

Button 按钮 

Button button =new Button("我是一个按钮");

 对于以上这些控件:

  1. 可以通过setText(string)设置控件的文本内容
  2. 可以通过getText()获得控件中的文本内容

按钮的点击事件

通过按钮的setOnAction方法可以设置按钮的点击操作,该方法需要一个Eventandler

@FunctionalInterface
public interface EventHandler<T extends Event> extends EventL istener{
        void handle(T varl);
}

因为此处是属于函数式接口@FunctionalInterface,所有建议使用lambda表达式来编写

案例分析

使用流式布局制作一个登录界面,并完成数据库查询

新建布局

FlowPane fp=new FlowPane();

控件创建与分析

Label lc1 = new Label("用户名");
		// 新建输入框
		TextField tf = new TextField("请输入你的用户名");
		// 新建密码标签:用户密码
		Label lc = new Label("用户密码");
		// 新建密码框
		PasswordField pwd = new PasswordField();

		// 新建登录按钮
		Button n = new Button("登录");

控件绑定

fp.getChildren().addAll(lc1, tf, lc, pwd, n);
//相当于调用了很多次add方法,但是要注意顺序

场景绑定

Scene sc = new Scene(fp, 230, 100);

舞台设置

primaryStage.setTitle("登录");
		primaryStage.setScene(sc);
		primaryStage.show();

登录事件 

n.setOnAction(e -> {
			String uersname = tf.getText();
			String password = pwd.getText();
			// 带入到dao层进行查询
			teacher dao = new teacherDao().list3(uersname, password);
			if (dao != null) {
				new Alert(Alert.AlertType.INFORMATION, "登录成功").showAndWait();
				// System.out.println("登录成功");
			} else {
				new Alert(Alert.AlertType.ERROR, "登录失败").showAndWait();
				// System.out.println("登录失败");
			}
			// System.out.println("我被点击了");
		});

AlertType

  • NONE

  • ERROR 

  •  WARNING

  • CONFIRMATION 

 

  • INFORMATION 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 基础介绍 的相关文章

随机推荐

  • Linux下内存泄露检测工具valgrind

    linux下有多种内存泄露的检测工具 valgrind算是比较好用的一款 valgrind功能比较强大 这里只是用到了内存泄露检测的功能 一 从官网下载 http www valgrind org downloads current htm
  • 使用delphi开发人工智能程序(参考资料)

    1 幻灯片 https www slideshare net embarcaderotechnet python for delphi developers part 1 introduction 2 python帮助 https open
  • Alias----时间复杂度为O(1)的离散采样算法

    转载自链接
  • ELT 工具无法查看 MessageContent详情,解决报错(error) Please install Wireshark and set codec path in ELT

    问题 ELT是MTK提供的MDLOG的查看工具 打开 MDLog文件查看消息内容无法显示并报错如下 如MDLog1 2022 0405 133332 muxz error Please install Wireshark and set c
  • 完全二叉树用数组存

    完成二叉树因为其编号从上到下 从左到右依次排放节点 所以直观上节点是 紧密 存储在一起的 任何一颗二叉树当然可以使用链式存储 单完全二叉树因其紧密存储的特点 可以使用一位数组存储 只需要按照层序依次将节点放入队列中就ok了 按层访问二叉树在
  • 借助PLC-Recorder,西门子PLC S7-200SMART实现2ms周期采集的方法(带时间戳采集)

    目录 1 测试条件 2 测试结论 3 PLC的发送程序 4 PLC Recorder侧的通讯设置 5 PLC Recorder的通道配置 6 PLC Recorder的变量配置 7 记录数据的情况 8 再说时间戳 9 小结 高速数据采集要保
  • React18组件一键转换Vue3组件(持续更新中)

    您好 如果喜欢我的文章 可以关注我的公众号 量子前端 将不定期关注推送前端好文 需求来源 博主最近一段时间其实是在自研React组件库的业务的 目前也有了大约二十几个组件 这里顺便先留一下组件库的地址哈 React View UI组件库线上
  • TypeScript 中的类型断言

    在这里 我们将了解 TypeScript 如何使用一些称为类型断言的内部逻辑机制来推断和检查变量的类型 类型断言允许我们设置值的类型并告诉编译器不要推断它 在这种情况下 作为程序员 我们可能比 TypeScript 可以自行推断的更了解变量
  • npm 启动输出日志

    npm start d
  • 7天学习opengl入门

    10月13号下午3 00队长给我开了一个会 10 14号开始学习opengl 今天10月21号 期间 虽然有时候课程很满 但每天都至少写一个程序 当然 这些只是我7天来业余时间的学习 我觉得这个网址不错 大家如果也想学习opengl 并且具
  • 将UTC时间格式转换成东八区时间格式

    在前后端数据接口通信中 后台返回的时间往往是 UTC 格式的 即2022 12 15T10 28 57 000 00 00这种 作为前端 我们需要将其转换为标准的本地格式 并用 YYYY MM DD HH mm ss 这种格式呈现给用户 用
  • 哈工大2018秋高级语言程序设计课程大作业

    Github文件下载地址哈工大2018秋高级语言程序设计课程 高级语言程序设计 实验大作业反思报告 实验大作业题目 智能趣味电子通讯录 类型 信息管理系统 学生姓名 郭茁宁 班 号 1837101 学 号 1183710109 所在院系 计
  • 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(15)

    今天测试的时候又出现了一个问题 在查看科室库的出库列表时 网页上会报出500的错误 即参数错误 但是出库的所有信息都能正确的在上面显示 同样的问题在下订单后查看订单 以及配送后查看配送列表时出现了 而这个问题在代码几乎完全一样的中心库那里却
  • Android Studio 下真机调试

    文章目录 一 开启真机调试 二 断开真机调试 一 开启真机调试 准备USB调试线 一端插在电脑USB接口上 另一端插在手机充电口上 下面以自己的手机 huawei nova 5 为例 点击手机界面上的设置应用 然后往下找到 关于手机 点击进
  • ElasticSearch-IK分词器介绍和下载

    IK分词器 什么是IK分词器 分词 把一段中文或者别的划分成一个一个的关键字 我们在搜索的时候会把自己的信息进行分词 会把数据库中或者索引库中的数据进行分词 然后进行一个匹配操作 默认的中文分词是将每个字看成一个词 比如 我爱魏一鹤 会被分
  • 步进电机基础(2.4)- HB型步进电机的转子齿数与主极数之间的关系

    步进电机基础 2 4 HB型步进电机的转子齿数与主极数之间的关系 前言 基本信息 公式 前言说明 HB型步进电机的转子齿数与主极数之间的关系 1 HB步进电机的相数 转子齿数 主极数之间的表达式 2 相内磁路的一般表达式 3 相间磁路的一般
  • pdf太大了如何压缩?这四种方法快来尝试下吧

    pdf太大了如何压缩 我们都知道 大型PDF文件会占据较多的存储空间 特别是当需要处理和存储大量PDF文件时 而我们通过压缩PDF文件 能够在很大程度上缩减文件大小 进而便于文件的传输 备份和存储 另外 在某些情况下 存储和传输设备 如移动
  • 献给阿尔吉侬的花束( 入门级bfs查找 + 模版解读 + 错误示范)

    献给阿尔吉侬的花束问题 文章目录 献给阿尔吉侬的花束问题 前言 题目描述 题目分析 方法判定 bfs 算法模版介绍 两个数组 记录地图 记录移动距离 一个队列 依次遍历所有接触到的点 一次遍历 模版代码如下 题解代码 错误示范 总结 前言
  • 【Java8 新特性 3】Supplier简介

    在Java8中增加的接口Supplier 最适合用于表示工厂 带有Supplier的方法 通常应该限制输入工厂的类型参数使用有限制的通配符类型 以便客户端能够传入一个工厂 来创建指定类型的任意子类型 应该将这些资源或者工厂传给构造器 或者静
  • JavaFX 基础介绍

    目录 JavaFX 基础介绍 代码介绍 整体结构 场景面板介绍 FlowPane流失布局 BorderPane边框布局 控件介绍 Label 文本标签 TextField 输入框 PasswordField Button 按钮 按钮的点击事