概述:
- 我们将会学习到多元化控件,多元化的布局以及多元化的事件应用!
数据库搭建
- 类别表
- 商品表
关系图
实体类:Category,Goods
public class Category {
private Integer id;
private String name;
}
public class Goods {
private Integer id;
private String name;
private Integer categoryId;
private Double price;
private String description;
private String cover;
private Date createTime;
}
页面分析
该界面的布局是非常典型的网格布局,我们可以拆分如下
该元素的控件则比我们之前的控件稍微多一点
涉及控件 Label 文本标签 , TextField 输入框 , ChoiceBox 下拉框 , Slider 滑动条 , TextArea 文本域 , FileChooser 文件选择 器 , Button 按钮 , DatePicker 日期选择器
布局定义
//主体布局
GridPane gridPane = new GridPane();
标签定义
Label name = new Label("商品名称");
- Label 类的构造可以在设置文本值的时候在设置一个 Node 类型,我们如果设置图标可以选择放入一个 ImageView 图标都在放在素材中,请放在 D: 下,或者修改一下代码中的盘符与位置 构建 ImageView 并设置图标
new ImageView(new Image("file:D:\\icons\\goods_insert\\name.png"));
此处前面的 file: 指的是读取当前磁盘中的文件所对应的协议
- 定义需要的所有标签
//标签搭建【为了便于理解 此处省略的路径为 D:\\icons\\goods_insert 】
Label name = new Label("商品名称", new ImageView(new Image("file:...\\name.png")));
Label category = new Label("商品类别", new ImageView(new Image("file:...\\category.png")));
Label price = new Label("商品价格", new ImageView(new Image("file:...\\price.png")));
Label desc = new Label("商品描述", new ImageView(new Image("file:...\\description.png")));
Label cover = new Label("商品封面", new ImageView(new Image("file:...\\cover.png")));
Label time = new Label("创建时间", new ImageView(new Image("file:...\\time.png")));
控件定义
- 商品名称
//商品名称
TextField nameCtl = new TextField();
- 商品类别 这点区别于之前的下拉框使用,此处需要在这里指定类型,便于后续的取值👼
ChoiceBox<Category> 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);//出现数字
效果如图所示: