JavaFX初体验

  • 初谈JavaFx
  • 普通页面的实现
  • JavaFX调用摄像头拍照

安装Scene Builder

背景:
最近有做一个web项目用JavaFx做成客户端的需求,从第一次听说JavaFx到完成需求花了4天时间,感觉JavaFX还是蛮有意思,作为初学者记录一下。

该项目是用JavaFX Scene Builder构建的,因为原生控件及布局 数据传输调用等很容易实现,在此不多做描述,因为网上没有搜到用Scene Builder结合自定义控件的方法,所以记录一下,谈一下第一次接触JavaFx的心得,和在Scene Builder基础上添加自定义控件(如摄像控件)功能的实现

初谈JavaFx

讲讲我这几天理解的JavaFx:
JavaFx是什么,是一个用java代码写的可视化的界面。
一亩地,我们要用时候,首先在地球上圈出你这亩地的大小,然后再围成一片施工区域,再在里面建房子 建设停车场啥啥的都可以由你。

地球->一亩地->施工区域->停车场
舞台(stage)->场景(scene)->布局(layout)pane->控件(如button)
示例一个简单的JavaFx程序

import javafx.application.*;
import javafx.scene.control.Button;
import javafx.scene.*;
import javafx.stage.*;
public class FirstMain extends Application {@Overridepublic void start(Stage stage){Button button = new Button("按钮控件");//按钮控件Scene scene = new Scene(button , 300 , 200 );//场景大小及控件stage.setTitle("标题");//舞台标题stage.setScene(scene);//场景放入舞台stage.show();//展示舞台}public static void main(String[] args){Application.launch(args);//启动}
}

展示效果:

一般来说,一个JavaFX主要有三个组成部分

  • 启动类 Main
  • 控制层 Controller
  • 视图层 .fxml

    三者之间关联:
    Main指定.fxml文件

    .fxml文件指定控制层

    其中控制层可以写视图,但是不建议用来写原生视图及控件,因为用Scene Builder在.fxml构建视图可以完成我们绝大多数需求,除了自定义的一下控件我们可以在控制层写进视图。

普通页面的实现

示例:

实现方法:
一、
1.创建一个fxml文件,Main方法指定该文件

public class Main extends Application {@Overridepublic void start(Stage primaryStage) throws Exception{//指定堆栈面板Parent root = FXMLLoader.load(getClass().getResource("fxml/Third.fxml"));//3.结果//场景 包含面板Scene scene = new Scene(root, 900, 400);//舞台 包含场景primaryStage.setTitle("身份认证系统");primaryStage.setScene(scene);primaryStage.show();}
}

2.右键点击该.fxml文件,选择用Scene Builder构建

3.在左侧拖动想要的控件即可以展示,纯(UI),页面做好之后保存,可以看到.fxml已经生产好代码可以直接用Main启动该程序

这个时候我们的样式已经做好了 剩下的就是交互了,实现方法类似于js
二、
1.先在.fxml中指定控制层

2.把需要交互的控件与控制层关联起来,在控件属性上设置 id 或 点击事件

  • 赋值一个label(文本)控件:

fxml 代码:

<Label fx:id="name" layoutX="820.0" layoutY="38.0" prefHeight="20.0" prefWidth="211.0" text="姓名" AnchorPane.rightAnchor="269.0" AnchorPane.topAnchor="38.0" />

控制层代码:

@FXML//身份证 姓名
private Label name;

赋值方法:

name.setText("张三");
  • 赋值一个ImageView(图片)控件:

fxml 代码:

 <ImageView fx:id="picture" fitHeight="160.0" fitWidth="160.0" layoutX="300.0" layoutY="54.0" pickOnBounds="true" preserveRatio="true" AnchorPane.leftAnchor="300.0"><image></image>
</ImageView>

控制层代码:

@FXML//自拍照片
private ImageView picture;

赋值方法:

picture.setImage(new Image("sample/img/jsf.png"));
  • 给button一个点击事件:

fxml 代码:

<Button onAction="#Determine"  layoutX="523.0" layoutY="590.0" mnemonicParsing="false" prefHeight="35.0" prefWidth="72.0" style="-fx-background-color: #BEDEED;" text="确定" AnchorPane.bottomAnchor="25.0" AnchorPane.rightAnchor="705.0"><font><Font size="20.0" /></font>
</Button>

控制层代码:

    @FXML//点击确认void Determine(ActionEvent event) {//点击按钮触发的方法System.out.println("点击确认");}

这样我们后端的交互基本上也处理完成了

JavaFX调用摄像头拍照

摄像头拍照页面展示:

JavaFX调用摄像头拍照相关推荐

  1. Ionic系列——调用摄像头拍照和选择图库照片功能的实现

    2019独角兽企业重金招聘Python工程师标准>>> 1.需求描述 最近要做一个功能就是调用摄像头拍照,然后上传照片的功能,或者直接打开图库选择照片然后上传. 2.准备 ①.添加插 ...

  2. android: 调用摄像头拍照

    很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...

  3. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)

    [实例简介] Android调用摄像头拍照(兼容7.0)Demo,原博客文章https://blog.csdn.net/u010356768/article/details/70808162 [实例截 ...

  4. Python:opencv库实现调用摄像头拍照并保存到本地

    导入 opencv-python库,复制代码即可运行 import cv2def picture_shoot(image_name='img.png', image_path=r'E:/') -> ...

  5. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template><div><!--开启摄像头 ...

  6. HTML5+JavaScript调用摄像头拍照或者摄像

    调用摄像头拍照或者摄像有多种方法,之前介绍过两种: HTML5 <input type="file">标签直接调用:https://blog.csdn.net/qq_2 ...

  7. jquery.webcam.js实现调用摄像头拍照兼容各个浏览器

    jquery.webcam.js实现调用摄像头拍照兼容各个浏览器 1.demo 可直接复制使用,需要在环境里运行. 2.所需 js 文件和 swf 控件可在官方博客下载,地址http://www.xa ...

  8. unity调用摄像头拍照

    我的unity调用摄像头拍照 因为做的是pc端的,所以不知道手机上效果是怎样的,据说代码是完全相同的. 废话不说,上代码, 打开摄像头代码: /// <summary>/// Opens ...

  9. matlab 调用摄像头拍照

    matlab 调用摄像头拍照 一 读取摄像头视频 vid = videoinput('winvideo',1); preview(vid); 二 获取某时刻摄像头画面 frame = getsnaps ...

最新文章

  1. C#和Java的闭包-Jon谈《The Beauty of Closures》
  2. 从源码分析DEARGUI之add_drawing
  3. Docker swarm 集群搭建
  4. hbase 研究 :LoadIncrementalHFiles/HFileOutputFormat2 cannot be resolved
  5. java 并发编程总结
  6. [蓝桥杯2019初赛]特别数的和-枚举
  7. centos7常用工具安装手册
  8. 吴恩达深度学习 —— 3.2 神经网络表示
  9. 5分钟速成C++14多线程编程
  10. cublas matlab,Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR
  11. IDEA Java开发常用插件
  12. sql tempdb清理_SQL Server TempDB数据库和闩锁争用
  13. Python os模块 -Python系统编程中的操作模块
  14. 关于hashcode和equals方法
  15. 消防给水及消火栓系统技术规范_消防给水——消火栓系统分区给水剖析
  16. web标准和w3c_W3C记录了Web的体系结构
  17. linux btrfs文件系统,btrfs 文件系统
  18. 人生苦短,使用百度云SDK,编写python代码调用接口的车牌识别
  19. InstallShield自定义对话框浅谈(转)
  20. 用浏览器下载一个文件,当点击该文件(原理)

热门文章

  1. 关于前端隐藏元素的问题
  2. Incorrect table definition; there can be only one auto column and it must be defined as a key
  3. 什么是Oracle AOL
  4. (新手向)在matlab中运用SMOTE和前馈神经网络对wilt(枯萎)数据集进行机器学习
  5. DEDEcms终极SEO优化教程
  6. fest556_支持键盘映射的FEST-Swing 1.2rc
  7. vue中使用天地图测距、测面、标点【一】
  8. 针对基于Phison(群联)U盘的BadUSB攻击
  9. python中bind的用法_Python socket.bind方法代码示例
  10. 知乎搜索关键字爬取相关图片