高颜值数据库项目实战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(完整精讲解版+源代码)(八)

高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(九)

更多项目逐句吐血精讲在这里,加油ヾ(◍°∇°◍)ノ゙!!

项目效果图

功能点实现

  1. 实现学生信息的录入
  2. 实现学生信息的修改
  3. 实现学生信息的更新
  4. 实现学生信息的删除
  5. 添加快捷键使用,方便快速管理
  6. 使用javafx+fxml+css控制ui样式
  7. 实现以javafx内部api调用绘制字体特效,无需额外资源调度
  8. 实现软件图标自定义,增加软件美观度
  9. 实现拖动窗口即可移动,使更加人性化
  10. 实现软件英文化,增加可交流性
  11. 禁用窗口缩放功能,防止ui碰撞
  12. 添加作者、主页、关闭按钮
  13. 增加事务弹窗,给予正确提示及错误解决方案

内部优化

  1. 使用分装思想,将功能块拆分,设立CreateMenu类,统一添加
  2. 封装错误与信息提示框,统一布局格式
  3. 封装数据库连接类,无需重复调度
  4. 采用Lambda表达式绑定事件,无需重写类
  5. 使用fxml模块化设计标签,方便增改
  6. 采用css设置样式,统一管理
  7. 去除不必要的类public,增加软件安全性
  8. 利用SceneBuilder绘制生成fxml控件,提升编写效率
  9. 采用不同尺寸图标格式适应多种运行状态

类结构示例

在这里插入图片描述

为菜单栏添加事件

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(完整精讲解版+源代码)(九)

后记

更多项目逐句吐血精讲在这里,加油ヾ(◍°∇°◍)ノ゙!!

C语言飞机大战小游戏(2万字!完整精讲解版+源代码)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值