javaFX.首页搭建

本文详细介绍了如何使用JavaFX构建应用程序的首页,包括Alert的高级用法、页面切换、新开窗口Stage和Scene的操作。通过创建登录、注册界面及学生管理界面,展示了布局设计、数据绑定和 Dao 类的设计。同时,讲解了自定义列处理器和不同布局组件的使用,如FlowPane、BorderPane和TableView。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目录

Alert进阶

切换与新开

新开窗口Stage 和 Scene

首页搭建

 布局分析

 结构对比

顶部

中部

 底部

完成老师管理学生的功能

需求

新建 MyLogin.java ,完成登录界面排版

完整代码

 注册页面搭建

完整代码

 学生管理界面

完整代码

 Dao类

 学生类(student)

 老师类(teacher)

 DBHelpes类


Alert进阶

 Alert 的基本使用

public Alert(Alert.AlertType,String,ButtonType...) {

分析 Alert 的构造函数:

第一个参数,弹框的类型,主要是图标的不同。

 第二个参数,弹框的提示信息

 第三个参数,一个按钮可变数组,用于弹框下方显示的按钮

public static final ButtonType APPLY;

public static final ButtonType OK;

public static final ButtonType CANCEL;

public static final ButtonType CLOSE;

public static final ButtonType YES;

public static final ButtonType NO;

public static final ButtonType FINISH;

public static final ButtonType NEXT;

public static final ButtonType PREVIOUS;

可以通过给构造函数中传入多个按钮来自定义弹框

Alert alert = new Alert(Alert.AlertType.ERROR, "登录失败,请重 试",ButtonType.OK,ButtonType.NO,ButtonType.CLOSE);

当调用了弹框的 showAndWait() 方法后,我们会接收到弹框被调用的按钮,

Optional type = alert.showAndWait();

我们只要做判断,就可以知道选择的按钮了,然后在执行相关的操作

if(type.get()==ButtonType.OK){

}

if(type.get()==ButtonType.NO){

}

if(type.get()==ButtonType.CLOSE){

}

切换与新开

前往登录 按钮设置点击事件,目的是点击它能够打开注册界面,了解如何进行页面新开与跳转

场景切换

根据之前的介绍,FX的构成部分分为

Stage 舞台

Scene 场景,可以理解为舞台上的节目,一个舞台可以呈现多个节目,对于场景的切换,就是将舞台的场景进行重新设置 setScene(Scene) 就可以完成了

可以通过代码来实践: 构建两个场景,分别放置不同的内容

FlowPane flow01=new FlowPane();

Label l1 = new Label("我是场景一");

flow01.getChildren().add(l1);

Scene s1 = new Scene(flow01);

FlowPane flow02=new FlowPane();

Label l2 = new Label("我是场景二");

flow02.getChildren().add(l2);

Scene s2 = new Scene(flow02);

给场景一放置一个按钮控件,当我们点击按钮的时候,将舞台场景切换为场景二

Button btn=new Button("切换场景二");

btn.setOnAction(a->{ primaryStage.setScene(s2);

});

flow01.getChildren().add(btn);

设置场景一为默认显示

primaryStage.setScene(s1);

默认视图:

 @Override

public void start(Stage primaryStage) throws Exception {

FlowPane flow01=new FlowPane();

Label l1 = new Label("我是场景一");

flow01.getChildren().add(l1);

Scene s1 = new Scene(flow01);

FlowPane flow02=new FlowPane();

Label l2 = new Label("我是场景二");

flow02.getChildren().add(l2);

Scene s2 = new Scene(flow02);

Button btn=new Button("切换场景二");

btn.setOnAction(a->{

primaryStage.setScene(s2);

});

flow01.getChildren().add(btn);

primaryStage.setScene(s1);

primaryStage.show(); }

新开窗口Stage 和 Scene

一个 Stage 就是一个窗口, Scene 就是该窗口中显示的内容,如果需要新开一个窗口,那就意味存在多个舞台 Stage 完成功能:点击按钮新开注册页面

编写登录页面 前往注册 点击事件

 此处会出来两个界面 ,如果需要关闭登录界面,可以调用 对应舞台的 close() 方法

primaryStage.close();

首页搭建

 布局分析

 结构对比

 所以搭建整体布局为:边框布局

BorderPane borderPane = new BorderPane();

顶部

需要放入多个控件,且位于一行,可以选择 FlowPane 或者 HBOX

中部

这个部位是表格控件 TableView

 TableView tableView = new TableView();

borderPane.setCenter(tableView);

 表中无列

 需要为表格设置列 TableColumn

TableColumn c1 = new TableColumn("学生编号");

TableColumn c2 = new TableColumn("学生名字");

TableColumn c3 = new TableColumn("学生密码");

TableColumn c4 = new TableColumn("学生性别");

TableColumn c5 = new TableColumn("学生地址");

TableColumn c6 = new TableColumn("学生爱好");

将列绑定到表格控件中

tableView.getColumns().addAll(c1, c2, c3, c4, c5, c6);

 表格控件

列值处理器

表格控件的数据可以来源于 List 集合,所以我们可以选择从数据库查询出来的学生 Student 对象集合

//StudentDao

public List list(){

//此处省略代码

}

从 Dao 层拿到学生集合之后,需要将该集合中的数据绑定到表格控件中,所以我们需要给该控件的列进行代码设置

 其中, new PropertyValueFactory(xx) 这行代码会自动帮助我们从学生对象中取值对应的属性,我们只需要改变列的名称与对 应的属性值 xx 即可完成数据显示

数据绑定

 需要注意的点: 绑定数据的方式

未指定泛型时候,必须使用 FXCollections.observableList(list) 对普通的List进行转换才能被表格所识别 ,指定了泛型后,可以直接使用 addAll() 方法合并集合

 强烈要求:在 TableView 后面指定遍历数据的类型,如 TableView

自定义列值处理器

此处定义在这里是为了进行拓展,可自行选择是否需要了解 自定义列

TableColumn c7 = new TableColumn("我是拓展列");

需要在 TableColumn 后面指定:

- 第一个?指的是数据集合的类型,比如List就可以替换为Student

- 第二个String指的该列显示的数据类型

自定义列处理器

c7.setCellValueFactory(row->{

return new ReadOnlyStringWrapper("我是自定义信息");

});

 底部

与顶部类似

完成老师管理学生的功能

需求

首先需要一个老师类,学生类,DBHelper类,Dao类,登录界面,注册界面,学生管理界面

新建 MyLogin.java ,完成登录界面排版

完整代码

 

 注册页面搭建

使用网格布局搭建页面

完整代码

 学生管理界面

完整代码

 Dao类

完整代码

 学生类(student)

代码,提供get,set方法tostring方法,无参,有参方法。。。

 老师类(teacher)

代码,提供get,set方法tostring方法,无参,有参方法。。。

 DBHelpes类

完整代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值