总结常用的Javafx功能及用法(上)
总结常用的Javafx功能及用法
- 什么是Javafx
- 一个窗口都有哪些内容
- 制作一个简单的窗口
- 一些方法
- Stage
- scene
- Pane
- node(一般node同用的方法,这里用label举例)
- 关闭提示窗口
- 多窗口的跳转
- 有关Color设置的三种方式
- 有关Font设置字体、字重、大小
- 有关Image加载图片
什么是Javafx
JavaFX是一个java语言图形界面开发工具包,加上布局和java逻辑可以制作出可视化的窗口
加粗样式放在前面的JavaFX 在线API
https://docs.oracle.com/javase/8/javafx/api/toc.htm
一个窗口都有哪些内容
一个Javafx程序包括:
stage,scene,pane(布局),node(label,button,image。。。)
彼此之间是包含关系。
一个pane可以包含多个node
制作一个简单的窗口
创建一个javaFX程序,继承Application类,重写它的start方法(逻辑在这里),执行时在main方法中调用launch方法从而会调用start
注意导包的时候,button是javafx下的,不要导错包
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;public class HelloJavaFX extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {//创建一个node,并设置好它的位置Button button = new Button("你好,世界");button.setLayoutX(200);button.setLayoutY(200);//创建一个布局,把button放进布局里AnchorPane root = new AnchorPane();root.getChildren().addAll(button);//创建一个场景,场景中要有布局,宽高是可选项Scene scene = new Scene(root,500,500);//对stage进行设置,将场景放进stage,设置标题,程序图标,以及最终展示出来stage.setScene(scene);stage.setTitle("JavaFX");stage.getIcons().add(new Image("1.jpg"));stage.show();}
}
一些方法
Stage
1、设置图标
stage.getIcons().add(new Image("图片路径"));
2、设置标题
stage.setTitle("标题");
3、接收场景
stage.setScene(scene);
4、窗口大小是否可调整
//窗口大小默认是可调整的,如果想固定大小不可调整,参数填false
stage.setResizable(false);
5、窗口样式
stage.initStyle(StageStyle.DECORATED);
//StageStyle.DECORATED 默认情况,有白色背景和装饰
//StageStyle.TRANSPARENT 透明背景,没有装饰(没有标题,最大最小化和关闭按钮,不可调整大小)
//StageStyle.UNDECORATED 白色背景,没有装饰(没有标题,最大最小化和关闭按钮,不可调整大小)
//StageStyle.UTILITY 白色背景,实用窗口(没有标题,固定大小不能最大化小化)
scene
1、接收布局
//创建一个场景,场景中要有布局,宽高是可选项
Scene scene = new Scene(布局,500,500);
2、设置鼠标图片
scene.setCursor(new ImageCursor(new Image("2.jpeg")));
Pane
常用的布局:
----BorderPane:将页面分成上下左右中五部分
BorderPane borderPane = new BorderPane();
ToolBar toolbar = new ToolBar();
borderPane.setTop(toolbar);
//borderPane.setCenter(toolbar);
//borderPane.setBottom(toolbar);
----AnchorPane:以偏移量或坐标轴去设定节点位置
//创建一个node,并设置好它的位置Button button = new Button("你好,世界");//创建一个布局,把button放进布局里AnchorPane root = new AnchorPane();//这里将button设置离布局上边缘200,距离布局左边缘100的位置//相当于直接对button进行坐标设置//button.setLayoutX(100);//button.setLayoutY(200);AnchorPane.setTopAnchor(button,200.0);AnchorPane.setLeftAnchor(button,100.0);//AnchorPane.setRightAnchor(button, 10.0);//AnchorPane.setBottomAnchor(button,100.0);root.getChildren().addAll(button);
node(一般node同用的方法,这里用label举例)
1、坐标
Label label = new Label("你要开心呀~");
label.setLayoutX(100);
label.setLayoutY(200);
2、颜色
//可以在setStyle方法中 定义node的背景颜色,边框颜色,边框大小等
label.setStyle("-fx-background-color: red;-fx-border-color: blue;-fx-border-width: 3px");
3、宽高
给label设置颜色后发现 文字其实被包裹在边框中的,这个时候我们可以调节它的宽高,和文字处于边框的位置
label.setStyle("-fx-background-color: red;-fx-border-color: blue;-fx-border-width: 3px");
label.setPrefWidth(200);
label.setPrefHeight(50);
label.setAlignment(Pos.CENTER);//CENTER_LEFT,CENTER_RIGHT
//label.setAlignment(Pos.BOTTOM_LEFT);
//label.setAlignment(Pos.TOP_RIGHT);
4、透明度
label.setOpacity(0.5);
5、旋转
//以label的中点为坐标轴顺时针旋转70度
label.setRotate(70);
6、平行垂直移动
//横向平移
label.setTranslateX(10);
//纵向平移
label.setTranslateY(10);
关闭提示窗口
//关掉平台界面设置默认的关闭方法
Platform.setImplicitExit(false);
//给stage设置一个关闭动作的响应
//利用lamda表达式,让event去消费这个请求
stage.setOnCloseRequest(event ->{event.consume();//创建一个提示响应窗口Alert alert = new Alert (Alert.AlertType.CONFIRMATION);//确认窗口//Alert alert = new Alert (Alert.AlertType.ERROR); 错误提示窗口//Alert alert = new Alert (Alert.AlertType.INFORMATION); 通知窗口//Alert alert = new Alert (Alert.AlertType.WARNING); 警告窗口alert.setTitle("退出");alert.setContentText("您确定要退出吗?");alert.setHeaderText(null);//ButtonType类用于指定应在对话框中向用户显示哪些按钮//如果用户点击确定关闭,则让平台界面关闭程序Optional<ButtonType> result = alert.showAndWait();if(result.get()==ButtonType.OK){Platform.exit();}
})
多窗口的跳转
多窗口的跳转是通过将不同的scene放在stage中,也就是要针对不同的button设置点击事件,在事件中更改stage的scene
//页面1Label label = new Label("你好呀,今天过的怎么样?");label.setLayoutX(70);label.setLayoutY(50);Button b1 = new Button("button1");b1.setLayoutX(90);b1.setLayoutY(100);//在布局中添加好 并放在scene中AnchorPane root = new AnchorPane();root.getChildren().addAll(label,b1);Scene scene = new Scene(root,270,470);//页面2Label l1 = new Label("要记得一直开心哦~");l1.setLayoutX(80);l1.setLayoutY(50);Button b2 = new Button("button2");b2.setLayoutX(95);b2.setLayoutY(100);AnchorPane root1 = new AnchorPane();root1.getChildren().addAll(l1,b2);Scene scene1 = new Scene(root1,270,470);//点击事件的页面跳转b1.setOnAction(event -> {primaryStage.setScene(scene1);});b2.setOnAction(event -> {primaryStage.setScene(scene);});
有关Color设置的三种方式
//创建一个圆,并设置坐标及半径Circle circle = new Circle();circle.setCenterX(250);circle.setCenterY(250);circle.setRadius(100);//使用rgb参数设置颜色circle.setFill(Color.rgb(255,0,0));//吸取的色块色值circle.setFill(Color.web("#f66a08"));//直接调用颜色的静态常量circle.setFill(Color.PURPLE);
有关Font设置字体、字重、大小
Label label = new Label("你好,世界");
label.setLayoutX(150);
label.setLayoutY(200);
//font有不同的重载方法 直接放double 设置字体大小
label.setFont(new Font(30));
//放字符串和double 是windows系统里有的字体名字和字体大小
label.setFont(Font.font("汉仪综艺体简",50));
//放字符串 ,字重(加粗,斜体) 和 字体大小
label.setFont(Font.font("汉仪综艺体简", FontWeight.BOLD,70));
//如果系统没有这个字体,需要找到这个字体文件的路径,使用loadfont.file下的绝对路径绝对路径!!!
label.setFont(Font.loadFont("file:D:\\Pro\\WorkSpace\\IdeaProjects\\Lesson\\src\\com\\yu\\abc\\ColorFontImage\\HYZYTJ.ttf",90));
//磁盘目录或者项目根目录开始
//file:src/com/yu/abc/ColorFontImage/HYZYTJ.ttf
//file:D:\Pro\WorkSpace\IdeaProjects\Lesson\src\com\yu\abc\ColorFontImage\HYZYTJ.ttf
有关Image加载图片
image图片需要放在imageView里面展示
ImageView imageView = new ImageView();
Image image = new Image("4.png");//这个路径是从src开始的
imageView.setImage(image);
总结常用的Javafx功能及用法(上)相关推荐
- 总结常用的Javafx功能及用法(下)
总结常用的Javafx功能及用法 控件的绑定和监听 事件驱动编程 什么是事件驱动 创建一个点击移动事件 创建一个拖拽移动文件的事件 FXML布局 Scene Builder的使用 Controller ...
- mysql 存储引擎作用_MySQL常用存储引擎功能与用法详解
MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV. ...
- 数值选择器(NumberPicker)的功能与用法
数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. set ...
- iOS常用第三方库大全,史上最全第三方库收集
下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...
- 网络工具nc的常见功能和用法
文章目录 前言 nc netcat ncat nc的用法 测试udp端口是否可用 端口扫描 一对一聊天 传输文件 端口转发 总结 前言 nc 是一个Linux环境下常用的工具命令,可以用来帮助开发者查 ...
- mysql基本语法 外键_mysql外键基本功能与用法详解
本文实例讲述了Mysql外键基本功能与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是外键 外键的增加 外键的修改和删除 外键的约束模式 首发日期:2018-04-12 什么是外键: 外键就 ...
- 鸿蒙应用开发 | 按钮(Button)组件 的功能与用法
大家好,我是你们的朋友 朋哥,今天开始朋哥开始研究鸿蒙了,定时会写一些文章分享给大家,希望多多提意见. 上一篇原创文章 解读了 文本框(Text)和编辑框(TextField)的功能与用法. 没有跟上 ...
- Javascript自定义事件功能与用法实例分析
原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...
- mysql中外键的作用是什么_mysql外键基本功能与用法详解
本文实例讲述了mysql外键基本功能与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是外键 外键的增加 外键的修改和删除 外键的约束模式 首发日期:2018-04-12 什么是外键: 外键就 ...
最新文章
- microsoft .net framework专题汇总
- Atlas Of Cardiovascular Emergencies 心血管急症图集
- 【深度学习】深度学习中的知识蒸馏技术(上)简介
- 置信学习:让样本中的“脏数据“原形毕露
- opensuse x64下编译Ice源码(以编译c++为例)
- html如何显示上传进度条,HTML5 Ajax文件上传进度条如何显示
- 【渝粤教育】国家开放大学2018年秋季 0043-22T计算机文化 参考试题
- 【LDPC系列2】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真(IEEE 802.16e标准协议基础矩阵)
- 互联网晚报 | 4月14日 星期四 | 山东六地银行下调房贷利率;​茅台一瓶降1000元;康师傅回应老坛酸菜面重新上架;...
- linux下用gtk+写比赛赌博GUI小游戏
- java持续集成soapui_接口自动化测试持续集成--Soapui接口功能测试参数化
- echarts vue 柱状图实例_「源码学习」适用于 Vue3 的 ECharts 包装组件
- TCPIP详解 卷一核心概念整理
- 哪个网站可以免费学计算机办公软件,有没有可以免费学习办公软件的网站?
- 绩效考核如何尽量公正
- 制作u盘winpe启动盘_U盘启动盘如何制作?图文教程详解!
- Python 与 SQL 这样超强结合,处理数据才是爆赞
- 安装Cpython解释器(day02)
- springmvc返回不带引号的字符串
- 【BLDC驱动】分析同步续流与体二极管续流
热门文章
- 基于jsp和servlet的蛋糕店售卖网站商城系统javaweb点心铺源码mysql
- 使用python执行uds诊断
- 流媒体技术基础-流媒体服务与框架
- sqlplus命令无需监听服务就可以登录本地数据库的登录方式的研究
- 【chatGPT】01 数组、二维数组在不同语言中的存储方式
- Ansible Tower01
- 松下PLC FP-XH C30T 和昆仑通态触摸屏 TPC7022Ex 程序下载步骤
- 昂达vi40精英版刷Linux,昂达vi40旗舰版刷机教程【图解】
- 2020年的年终总结(仰望星空、脚踏实地)
- GoSURF、MyIe2、小树浏览肉搏篇(转)