基本:舞台(Stage)、场景(Scene)
舞台和场景绑定布局中可以放多个控件以及布局
一、布局:Pane
流式布局:FlowPane 一行排列填满自动转到下一行
边框布局:BorderPane 分上中下左右五个区域,每个区域只能有一个节点
网格布局:GridPane 分列和行 梳着是列横着是行 绑定控件和布局需要指定位置 位置从0开始
水平布局:HBox 横着排列 填满自动换到下一行
垂直布局:VBox 竖着排列
分割面板(分割布局): SplitPane 与边框布局不同,这个布局的方向只能是水平的或者是垂直的,
可以放入多个控件或者布局,会为每个控件生成一个分割条,
我们可以通过拉动他来改变控件或者布局占据的空间大小
分割面板设置
分割面板中有多条分割线使用这个方法调整每根分割线的占比
splitPane.setDividerPositions(0.06); 不懂就慢慢调整数字
分割面板默认是水平分排列 需要改为垂直排列
splitPane.setOrientation(Orientation.VERTICAL)
标题面板(布局):TitledPane 面板具备对应的标题,可以用来放商品的名字,具备折叠功能,
可以让页面看上去不是那么拥挤,点开折叠则可以查看商品内容与操作
设置面板大小
titledPane.setPrefWidth(600-20);
设置面板标题
titledPane.setText("标题名");
设置面板是否展开
titledPane.setExpanded(false);
设置面板是否可以折叠
titledPane.setCollapsible(true);
滚动面板(布局):ScrollPane 数据多了之后可以滑动 创建的时候将可能列数过多的布局丢在参数里
二、控件
文本标签:Label
文本输入框:TextField
取值方法:
String A = textField .getText(); //String接收
密码输入框:PasswordField
取值方法:
String mm = passwordField.getText(); //String接收
按钮:Button 按钮点击事件setOnAction(a->{});
对于多选框和单选框,都可以通过 setSelected(boolean) 来设置选中状态,通过 isSelected() 来获取选中状态
单选框:RadioButton
性别单选框
RadioButton r1 = new RadioButton("男");
RadioButton r2 = new RadioButton("女");
这样的单选框是无法实现单选功能的,只有当单选按钮在一组的时候才能完成单选功能
ToggleGroup group = new ToggleGroup();//构建单选按钮组
设置两个单选框在同一组
r1.setToggleGroup(group);
r2.setToggleGroup(group);
默认选中男
r1.setSelected(true);
获取单选框的值
String sex = "男";//设置性别默认为男
if(r2.isSelected()) {
sex = r2.getText();//如果选中女的单选框就赋值为女
}
多选框:CheckBox
赋值:
在创建对象时赋值 放参数里面
获取多选框选中的值:
需要用到字符串连接器:StringJoiner
StringJoiner joiner = new StringJoiner(",");//",号分隔开"
通过 isSelected() 来获取选中状态
if(多选框对象名.isSelected()){
joiner.add(多选框对象名.getText());//如果选中了就把值添加到字符串连接器,以此类推
}
将取到的值(用户多选的值)赋值给字符串
String A = joiner.toString();
下拉框:ChoiceBox<类型>
给下拉框设置选项:Item
choiceBox.getItems().addAll("湖南","湖北","河南","河北");//add(添加单个)、addAll(添加多个或集合)
设置默认值:Value 只能设置已有的值
choiceBox.setValue("湖南");
获取下拉框选中的值:
String A = choiceBox.getValue();//String接收
下拉框可能存在多个属性数据只取其中某个数据通过转换器获取
choiceBoxset.Converter(new StringConverter<数据类型>() {
创建转换器要重写它的两个方法 我们只需要用到toString方法修改返回的值即可
public String toString(数据类型 A) {
return A.get要取的值();
}
public 数据类型 fromString(String string) {
return null;
}
});
滑动条:Slider
给滑动条设置数据
v3.setMajorTickUnit(8);//刻度间隙为8
v3.setMinorTickCount(2);//每次滑动为2
v3.setShowTickMarks(true);//是否出现刻度
v3.setShowTickLabels(true);//是否出现数字
获取滑动条的值:
double A = slider.getValue();//小数或整数接收
文本域:TextArea
给文本域设置大小
textArea.setMaxSize(300, 150);
获取文本域中的值:
String A = textArea.getText();//String接收
文件选择器:FileChooser
定义文件后缀名过滤器
ExtensionFilter filter = new ExtensionFilter("image",new String[] {"*.jpg","*.png"});
File 文件
FileChooser fc = new FileChooser();
添加扩展名过滤器
fc.getExtensionFilters().add(filter);
打开一个文件选择器返回一个文件
File file = fc.showOpenDialog(null);
if(file==null) {//判断是否为空
return;//为空中断代码
}
接收选择的文件的路径:
//Absolute 绝对,Path 路径
String path = file.getAbsolutePath();//String接收
日期选择器:DatePicker
时间createTime
数据库只能添加java.sql.Date类型的时间
LocalDate d = datePicker.getValue();
将LocalDate时间变成jav.sql.Date时间
Date createTime = new Date(//创建对象的同时把时间选择器的值转换成jav.sql.Date时间
d.getYear()-1900,
d.getMonthValue()-1,
d.getDayOfMonth()
);
菜单按钮:MenuButton 菜单按钮可以绑定菜单项 从而实现下拉功能
菜单栏
MenuButton b1 = new MenuButton("商品管理");
MenuButton b2 = new MenuButton("类别管理");
菜单 b1 的菜单项
MenuItem t1 = new MenuItem("商品新增");
MenuItem t2 = new MenuItem("商品删除");
菜单 b2 的菜单项
MenuItem t3 = new MenuItem("类别新增");
MenuItem t4 = new MenuItem("类别删除");
将菜单与菜单项进行绑定
b1.getItems().add(t1);
b1.getItems().add(t2);
b2.getItems().add(t3);
b2.getItems().add(t4);
工具栏:ToolBar 工具栏中可以直接放入组件 也就是说 Button , ChoiseBox 等控件都可以直接放
创建工具栏 在参数里对菜单进行绑定
ToolBar barCtl = new ToolBar(b1, b2);
三、常用的一些方法
布局设置居中以及间隔方法
设置居中方式
gridPane.setAlignment(Pos.CENTER);
设置居中方式
布局名.setAlignment(Pos.CENTER);
Pos 类中定义了一些居中方式
TOP_LEFT 左上
TOP_CENTER 居上
TOP_RIGHT 右上
CENTER_LEFT 居左
CENTER 居中
CENTER_RIGHT 居右
BOTTOM_LEFT 左下
BOTTOM_CENTER 居下
BOTTOM_RIGHT 右下
两个格子之间的水平距离
gridPane.setHgap(10);
两个各自之间的垂直距离
gridPane.setVgap(10);
界面添加图片:
// 绝对路径
Image input = new Image("file:G:\\美女.jpg",600,300,false,false);
// background-image 为元素设置背景图像。
BackgroundImage backgroundimage = new BackgroundImage(input,
BackgroundRepeat.NO_REPEAT,
BackgroundRepeat.NO_REPEAT,
BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT);
// 放进去
Background background = new Background(backgroundimage);
//把图片放布局里面
borderPane.setBackground(background);
// 绑定布局和场景
Scene scene = new Scene(borderPane, 600, 300);
primaryStage.setScene(scene);// 显示舞台
控件添加图片:
创建控件时在参数中添加:(new Image("file:图片地址\\图片名.类型"));
表格控件(表格视图) TableView:
创建表格控件对象:
这个地方一定要指定类型
TableView<Student> table = new TableView<Student>();//<>里面为数据类型
为表格设置列 TableColumn
TableColumn<数据类型, 数据类型> c1 = new TableColumn("学生编号");//前面的数据类型为Student类,后面的为最后的数据对应的数据类型(String/Integer) 注意Student类也要为Integer类型
TableColumn c2 = new TableColumn("学生名字");
TableColumn c3 = new TableColumn("学生密码");
TableColumn c4 = new TableColumn("学生性别");
TableColumn c5 = new TableColumn("学生地址");
TableColumn c6 = new TableColumn("学生爱好");
将列绑定到表格控件中
table.getColumns().addAll(c1, c2, c3, c4, c5, c6)
绑定学生类对应的属性
将学生的id属性绑定到第一列
c1.setCellValueFactory(new PropertyValueFactory("id"));
将学生的name属性绑定到第二列
c2.setCellValueFactory(new PropertyValueFactory("name"));
将学生的password属性绑定到第三列
c3.setCellValueFactory(new PropertyValueFactory("password"));
将学生的gender属性绑定到第四列
c4.setCellValueFactory(new PropertyValueFactory("gender"));
将学生的address属性绑定到第五列
c5.setCellValueFactory(new PropertyValueFactory("address"));
将学生的hobby属性绑定到第六列
c6.setCellValueFactory(new PropertyValueFactory("hobby"));
将数据库中的值放到表中
创建集合接收数据中查询到的值
List<Student> list = studao.all();//all方法要是有参的话记得给参数
将查询到的集合方法表中:add()添加单个、addAll()添加多个或集合
table.getItems().addAll(list);
javaFX 基本的使用 希望对您们有所帮助