目录

数据库搭建

​编辑 页面解析

控件定义

布局制作

功能制作

类别下拉框绑定

文件选择功能

按钮功能设置


目标 丰富页面设计 更多控件与使用 文件上传的实现

多元化的控件 , 多元化的布局 以及 多元化的事件应用 这里的任务便是 新增窗口 界面

数据库搭建

类别表

商品表

实体类

 页面解析

该界面的布局是非常典型的网格布局,我们可以拆分如下

该元素的控件则比我们之前的控件稍微多一点

 涉及控件 Label 文本标签 , TextField 输入框 , ChoiceBox 下拉框 , Slider 滑动条 , TextArea 文本域 , FileChooser 文件选择 器 , Button 按钮 , DatePicker 日期选择器

布局定义

//主体布局

GridPane gridPane = new GridPane();

标签定义

Label name = new Label("商品名称");

还可以进行自定义,例如设置 Label 的图标

public Label(String, Node) {}

Label 类的构造可以在设置文本值的时候在设置一个 Node 类型,我们如果设置图标可以选择放入一个 ImageView

图标没有到 百度  阿里icon里面下载

构建 ImageView 并设置图标

new ImageView(new Image("file:D:\\icons\\goods_insert\\name.png"));

此处前面的 file: 指的是读取当前磁盘中的文件所对应的协议

后面是文件所在的位置和name名字.png

结合 Label 使用

Label name = new Label("商品名称", new ImageView(new Image("file:...")));

定义需要的所有标签

控件定义

商品名称

//商品名称

TextField nameCtl = new TextField();

商品类别 这点区别于之前的下拉框使用,此处需要在这里指定类型,便于后续的取值

ChoiceBox categoryCtl = new ChoiceBox();

商品价格 类似拼多多的小商城,我们可以使用滑动条规范价格,不至于让价格太高

Slider sliderCtl = new Slider(0, 100, 0);

Slider(最小值,最大值,当前值)

也可以让滑动条出现刻度

sliderCtl.setMajorTickUnit(8);//刻度间隙为9

sliderCtl.setMinorTickCount(2);//每次滑动为2

sliderCtl.setShowTickMarks(true);//出现刻度

sliderCtl.setShowTickLabels(true);//出现数字

商品描述

TextArea areaCtl = new TextArea();

也可以调整文本域的大小

areaCtl.setMaxWidth(300);

areaCtl.setMaxHeight(100);

商品封面 此处文件选择器需要按钮事件触发,所以我们选择了使用多个控件来拼接

//文件选择

FileChooser fileChooser = new FileChooser();

Button choiseBtn = new Button("选择封面");

TextField fileCtl = new TextField();

HBox filePane = new HBox(choiseBtn, fileCtl);

商品创建事件

//日期选择

DatePicker dateCtl = new DatePicker();

 按钮

此处的【...】为 D:\\icons\\index

Button yes = new Button("确定", new ImageView(new Image("file:...\\yes.png")));

Button no = new Button("取消", new ImageView(new Image("file:...\\no.png")));

布局制作

完整代码

//网格居中

gridPane.setAlignment(Pos.CENTER);

gridPane.setHgap(10);

gridPane.setVgap(10);

//标签添加

gridPane.add(name, 0, 0);

gridPane.add(category, 0, 1);

gridPane.add(price, 0, 2);

gridPane.add(desc, 0, 3);

gridPane.add(cover, 0, 4);

gridPane.add(time, 0, 5);

//商品名称控件添加

gridPane.add(nameCtl, 1, 0);

//商品分类添加

gridPane.add(categoryCtl, 1, 1);

//商品价格 滑动条添加

gridPane.add(sliderCtl, 1, 2);

//商品描述 文本域设置

gridPane.add(areaCtl, 1, 3);

areaCtl.setMaxWidth(300);

areaCtl.setMaxHeight(100);

//文件选择设置

gridPane.add(filePane, 1, 4); filePane.setSpacing(5); //设置HBox的间隙,稍微美观一点

fileCtl.setEditable(false);

//设置输入框禁用,该框的内容只能由文件选择器填入 //日期设置

gridPane.add(dateCtl, 1, 5);

//按钮设置

gridPane.add(yes, 0, 6);

gridPane.add(no, 1, 6);

舞台Stage的设置

primaryStage.setScene(new Scene(gridPane, 500, 400));

primaryStage.setTitle("商品新增");

primaryStage.show();

功能制作

类别下拉框绑定

编写 Dao 层方法用于获取数据库中的类别数据

这里进行分类绑定的方法与之前我们进行分类绑定的方法不太一致。

之前我们绑定到下拉框中都是文本框的值,但是这这里,我们在绑定完成还需要再选中后获得被选中的类别的编号,我们可以直接选 择将下拉框与 Category 类型绑定。

再看定义下拉框的时候的代码 ChoiceBox 一定要在这里指定清楚这个类型 同时,因为显示在下拉框中的值是 Category 的 name 属性,所以还需要定义转换器

我们再上面为 ChoiceBox 设置好了类型,所以此处可以进行数据添加了,可以直接使用 List 的 addAll() 方法直接添加数据库中 的数据集合

categoryCtl.getItems().addAll(categoryDao.list());

文件选择功能

大致流程如下:

点击 选择封面 按钮,打开文件选择器

选择对应的封面图片 将图片的路径放入输入框中

给按钮添加点击事件,并打开文件选择器

choiseBtn.setOnAction(a -> {

//此处调用选择器的 showOpenDialog 打开对话框

//方法会返回选中的文件

File file = fileChooser.showOpenDialog(primaryStage);

});

因为用户可能存在没选中的情况,需要进行判断

if (file != null) {

//当文件不为null 意味着用户选中了文件

//将文件的路径放入输入框中

fileCtl.setText(file.getAbsolutePath());

}

为了程序安全,还可以选择加上文件类型过滤 常见图片的格式:.jpg .png

按钮功能设置

退出按钮

no.setOnAction(a -> {

primaryStage.close();

});

确认按钮

获取数据,封装 Goods 对象 调用 Dao 层实现增加功能

Goods goods = new Goods();

获得商品名称

goods.setName(nameCtl.getText());

获得商品类别编号

因为是进行了对象绑定,通过获取下拉框中被选中的选项会直接拿到对应的 Category 对象,就可以获取对应的类别编号了

Category item = categoryCtl.getSelectionModel().getSelectedItem(); goods.setCategoryId(item.getId());

获取商品描述

goods.setDescription(desc.getText());

获取商品价格

goods.setPrice(sliderCtl.getValue());

获取商品封面

文件选择器会将路径放到对应的输入框中,只需要获取输入框的值就是对应了文件的路径

goods.setCover(fileCtl.getText());

获取商品创建时间

我们将会拿到一个 LocalDate 这是 Java8 中提供的时间类型之一,我们需要的是 java.sql.Date ,我们可以通过拿到对象的年月 日属性并将这些属性赋值给 Date 对象

调用 Dao 层方法

int i = goodsDao.insert(goods);

if(i>0){

... 省略一万行代码

}else{

... 省略一万行代码

}

完整代码

JavaFX.控件讲解相关推荐

  1. 使用JavaFX控件

    使用JavaFX2.0的控件 (李佳明译自 www.JavaFX.com,原文:Alla Redko/甲骨文高级技术专家) 关于本教程 本教程覆盖了JavaFX API中内置的JavaFX UI控件. ...

  2. javafx控件Button

    Button是Control的一个子类,属于控件的一种 基本使用方法 创建一个按钮,传入一个字符串,即为按钮的标签 Button b=new Button ("name"); 也可 ...

  3. 【LabVIEW懒人系列教程-小白入门】1.2LabVIEW前面板控件讲解

    上次课程作业编写:d=a+b+c 前面板创建4个控件:数值型输入控件:a,b,c:数值型显示控件d ctrl+e 切换到程序框图界面,添加2个 "+"算法,然后连线,a,b,c,d ...

  4. Windows窗体学这一篇就够了(C#控件讲解)

    目录 一.Form窗体 1.1窗体的创建和删除 1.添加窗体 2.删除窗体 3.多窗体的使用 1.2.窗体属性 1.2.1更换窗体图标 1.2.2隐藏窗体的标题栏(FormBorderStyle属性) ...

  5. JavaFX控件ID:设置Label文本内容代码示例

    最终效果 点击按钮后label文本会发生变化: 场景编辑 设置label的ID:fx:id: 自动生成属性: 代码 pom <build><finalName>HelloJav ...

  6. JAVAFX控件——TableView数据的导入和插入(数据库)

    在JavaFx应用中对创建表格最重要的TableView, TableColumnh和TableCell这三个类. 你可以通过实现数据模型(data model) 和 实现 单元格工厂(cell fa ...

  7. JavaFX 控件 ImageView

    ImageView 支持格式: BMP GIF JPEG PNG //加载图片 //如果设置了 requestedXXX 尺寸, ImageView中 设置 FitXXX 尺寸是基于requested ...

  8. JavaFX入门(五):使用CSS样式美化你的UI控件

    CSS(层叠样式表,Cascading Style Sheets)原来是被用来在网页开发中表现HTML元素样式的一种文本标记语言.HTML用来展现内容,CSS被用来设计内容的样式,这样做的好处就是内容 ...

  9. Android 图片控件ImageView

    前言: 这篇博客聊一聊在Android下ImageView的使用,在此篇博客中, 会讲解到ImageView的一些属性的使用,以及ImageView展示图片的放大.缩小.旋转等操作. 最后再讲解一下A ...

  10. 使用JavaFX2.0的控件

    关于本教程 本教程覆盖了JavaFX API中内置的JavaFX UI控件. 本文包含以下章节: JavaFX的UI控件 标签 按钮 单选按钮 切换按钮 复选框 选择框 文本框 密码框 滚动条 滚动窗 ...

最新文章

  1. 从青年基金到面上项目
  2. 简单的启动代码 IMPORT |Image$$RO$$Limit|
  3. 大数据促健康产业高增长
  4. 从ThoughtWorks 2017技术雷达看微软技术
  5. StringBuffer 和 StringBuilder 的 3 个区别
  6. c语言 b的作用,在C语言中各个标点符号的作用
  7. 方舟编译器的安装和编译Helloword(2)
  8. iOS一段文字设置多种颜色格式
  9. 技术专家(ai/大数据)_``我们淹没在数据中'':在专家和AI时代如何思考自己
  10. 怎么创建java项目?新建java项目的步骤
  11. 【深度学习案例】手写数字项目实现-3. Matlab深度学习模型训练
  12. Linux 2.6内核配置说明(Device Drivers设备驱动程序)
  13. 基于Python的股票红利预测
  14. 腾讯与阿里巴巴投资可编程芯片公司Barefoot Networks
  15. LRU算法模拟器(基于Java和VUE前端实现)
  16. AndroidStudio界面跳转
  17. TC+Iptables+htb
  18. 浅析Sublabel-Accurate Relaxation of Nonconvex Energies CVPR 2016 Best Paper Honorable Mention
  19. jython-installer-2.7.1下载安装
  20. 如何做一个职业的程序员-《麦肯锡方法》读书笔记

热门文章

  1. 两台计算机传输文件速度,一根网线,两台电脑,超高速传输文件
  2. 昌平二中2021高考成绩查询喜报,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  3. wlacm 铲雪车snow 题解
  4. 安全系列之一——SYS-VUL-0048漏洞
  5. 计算机卡慢解决方法,电脑慢的快速解决办法 四种方法电脑速度变快10倍
  6. Aseprite Dark Mort HD 主题
  7. 【史上最全 | 编程入门指南无标题】
  8. 用jQuery合并表格中相同文本的相邻单元格
  9. 我的世界java版天空材质_我的世界:天空还能如此真实?四款天空效果对比!网友:我全都要...
  10. Internet协议的安全性