3:高颜值JavaFX数据库-九讲之三
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(一)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(二)
[高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(三)](当前位置)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(四)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(五)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(七)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(八)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(九)
项目效果图
![]() |
![]() |
![]() |
![]() |
![]() |
功能点实现
- 实现学生信息的录入
- 实现学生信息的修改
- 实现学生信息的更新
- 实现学生信息的删除
- 添加快捷键使用,方便快速管理
- 使用javafx+fxml+css控制ui样式
- 实现以javafx内部api调用绘制字体特效,无需额外资源调度
- 实现软件图标自定义,增加软件美观度
- 实现拖动窗口即可移动,使更加人性化
- 实现软件英文化,增加可交流性
- 禁用窗口缩放功能,防止ui碰撞
- 添加作者、主页、关闭按钮
- 增加事务弹窗,给予正确提示及错误解决方案
内部优化
- 使用分装思想,将功能块拆分,设立CreateMenu类,统一添加
- 封装错误与信息提示框,统一布局格式
- 封装数据库连接类,无需重复调度
- 采用Lambda表达式绑定事件,无需重写类
- 使用fxml模块化设计标签,方便增改
- 采用css设置样式,统一管理
- 去除不必要的类public,增加软件安全性
- 利用SceneBuilder绘制生成fxml控件,提升编写效率
- 采用不同尺寸图标格式适应多种运行状态
类结构示例
为菜单栏添加事件
1、写出事件信息
当我们点击菜单栏的按钮时,我们要显示面板,所以我们要在按钮上添加一个鼠标点击事件
menuItem.setOnAction((ActionEvent event) -> {
});
setOnAction就是点击的意思
下面这个是异常处理,就是如果出现问题了怎么解决,现在我们先不解决,所以就写上这个格式
try{
} catch (Exception e) {
e.printStackTrace();
}
borderPane.setCenter是把中间的部分设置为什么,就是把最大的那块要放我们的内容
borderPane.setCenter(new Entry().createNode());
我们新建一个类,叫Entry,插入的意思,名字随便起,我们稍后创建,然后里面还有个createNode节点,来创建内容
好了,合起来就是下面的了:
menuItem.setOnAction((ActionEvent event) -> {
try {
borderPane.setCenter(new Entry().createNode());
} catch (Exception e) {
e.printStackTrace();
}
});
2、将这个事件放到createMenuInformationSearch中
接着上次,我们写好了整个方法
Menu createMenuInformationSearch(BorderPane borderPane) {
Menu menu = new Menu("Information _Search");
menu.setMnemonicParsing(true); // 设置快捷键有效
MenuItem menuItem = new MenuItem("Search");
menu.getItems().addAll(menuItem);
menuItem.setOnAction((ActionEvent event) -> {
try {
borderPane.setCenter(new Search().createNode());
} catch (Exception e) {
e.printStackTrace();
}
});
return menu;
}
3、为其他按钮添加事件信息
createMenuInformationUpdate
在Update更新操作是方法中,我们也要设置事件,要不然用户点就没有反应
这些操作都是重复了,所以就不一一介绍了
menuItem.setOnAction((ActionEvent event) -> {
try {
borderPane.setCenter(new Update().createNode());
} catch (Exception e) {
e.printStackTrace();
}
});
我们继续把这个放到原来的方法里面
Menu createMenuInformationUpdate(BorderPane borderPane) {
Menu menu = new Menu("Information _Update");
menu.setMnemonicParsing(true); // 设置快捷键有效
MenuItem menuItem = new MenuItem("Update");
menu.getItems().addAll(menuItem);
menuItem.setOnAction((ActionEvent event) -> {
try {
borderPane.setCenter(new Update().createNode());
} catch (Exception e) {
e.printStackTrace();
}
});
return menu;
}
createMenuInformationDelete
在Delete更新操作是方法中,我们也要设置事件
menuItem.setOnAction((ActionEvent event) -> {
try {
borderPane.setCenter(new Delete().createNode());
} catch (Exception e) {
e.printStackTrace();
}
});
我们继续把这个放到原来的方法里面
Menu createMenuInformationDelete(BorderPane borderPane) {
Menu menu = new Menu("Information _Delete");
menu.setMnemonicParsing(true); // 设置快捷键有效
MenuItem menuItem = new MenuItem("Delete");
menu.getItems().addAll(menuItem);
menuItem.setOnAction((ActionEvent event) -> {
try {
borderPane.setCenter(new Delete().createNode());
} catch (Exception e) {
e.printStackTrace();
}
});
return menu;
}
createMenuInformationSystem
在System更新操作是方法中,我们也要设置事件
这时,我们在点击menuItem2,也就是关闭的按钮时,我们调用一个东西,要是用户说是就关闭,要是不是就取消,所以要if判断一下
menuItem1.setOnAction((ActionEvent event) -> {
borderPane.setCenter(new TextMain().createText());
});
menuItem2.setOnAction((ActionEvent event) -> {
if (new Off().show())
System.exit(0);
});
menuItem3.setOnAction((ActionEvent event) -> {
new Author().show();
});
我们继续把这个放到原来的方法里面
Menu createMenuInformationSystem(BorderPane borderPane) {
Menu menu = new Menu("S_ystem");
menu.setMnemonicParsing(true); // 设置快捷键有效
MenuItem menuItem1 = new MenuItem("Home");
MenuItem menuItem2 = new MenuItem("Off");
MenuItem menuItem3 = new MenuItem("Author");
menu.getItems().addAll(menuItem1, menuItem2, menuItem3);
menuItem1.setOnAction((ActionEvent event) -> {
borderPane.setCenter(new TextMain().createText());
});
menuItem2.setOnAction((ActionEvent event) -> {
if (new Off().show())
System.exit(0);
});
menuItem3.setOnAction((ActionEvent event) -> {
new Author().show();
});
return menu;
}
关注后续章节,我们会添加更多功能:
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(一)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(二)
[高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(三)](当前位置)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(四)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(五)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(七)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(八)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(九)