IDEA+MySQL+JavaFX

  • 软件
  • 项目创建
  • 设计界面
  • Controller代码编写
  • 按钮响应
  • 数据库
  • 主要代码
  • 欢迎打扰

刚刚结束了小学期,在这里我想借助我的一个小项目——班级通讯录管理系统,谈谈我的一些想法和学习心得。这个项目在IDEA开发,使用MySQL作为数据库,使用JavaFx SenceBuilder设计界面。所以我想借助这个项目帮助初学者了解idea中数据库的连接和javafx的简单使用。


项目地址:https://github.com/yfengl/address,(文章虽然没写完,但是项目是写完整了的).

软件

编辑器:IDEA2020.1
JDK版本:1.8.0_251
数据库:MySQL 8.0.20
其他:JavaFx SenceBuilder 2.0

项目创建

打开IDEA,创建一个新的项目,选择Java FX项目,选择jdk并设置项目名。创建好的项目大概这样:

设计界面

新建一个包resources用来放我们的fxml文件。在这个包中新建一个fxml文件,我们命名为adressList.fxml。

选择addressList.fxml,右键选择open in SenceBuilder:

然后可以在Sence Builder编辑自己的界面:

这是我的界面:

这里我就设置两个按键(更新和添加)的功能为例。选中更新这个按键,点击右边的Code那栏,在fx:id中写下它的变量名,即为代码中使用的变量名,添加功能也是一样,选中,修改fx:id

一切设计好后,先保存,然后选择View->Show sample…然后把代码复制;

Controller代码编写

回到IDEA,新建一个包adress和类AddressList,把刚刚复制的代码粘贴到这个类;让AddressList类继承于Application并添加satrt()方法,main()方法以及一个初始化方法initialize()

按钮响应

在initialize()方法中,如添加方法,其fx:id为add,其响应方式为
大括号中为响应执行事件;即fx:id.setOnAction(e->{ });

数据库

建议下载项目自己学习把!

主要代码

AddressList.java

public class AddressList extends Application {@FXMLprivate TableView<Student> tableView;@FXMLprivate TableColumn<?,?> deleteCol,updateCol;@FXMLprivate TableColumn<?,?> numberCol;@FXMLprivate TableColumn<?,?> classCol,mailCol,telCol,nameCol;@FXMLprivate Button add,check,about,file,updateStudent;@FXMLprivate TextField fileName,checkID,message;private final StudentDao sDao=new StudentDao();private static Stage stage;public int updateId;public void initialize() {try {getStudentList("getStudentsList()");} catch (SQLException e1) {e1.printStackTrace();}updateStudent.setOnAction(e->{message.setText("updateStudent");try {getStudentList("getStudentsList()");} catch (SQLException se) {se.printStackTrace();}});file.setOnAction(e->{message.setText("openFile");try {saveFile();} catch (SQLException se) {se.printStackTrace();}});add.setOnAction(e-> addStudent());check.setOnAction(e-> {message.setText("check: "+"” "+checkID.getText()+" “");try {checkStudent();} catch (SQLException se) {se.printStackTrace();}});about.setOnAction(e->{Alert aboutDialog = createAboutDialog();aboutDialog.show();});}public void show(){stage=new Stage();start(stage);}@Overridepublic void start(Stage stage) {AddressList.stage =stage;try {Parent root= FXMLLoader.load(getClass().getResource("resources/fxml/Address.fxml"));Scene scene = new Scene(root);stage.setScene(scene);stage.setResizable(false);stage.setTitle("班级通讯录系统");stage.show();} catch(Exception e) {e.printStackTrace();}}public static void main(String[] args) {launch(args);}public void getStudentList(String key) throws SQLException {ObservableList<Student> list= FXCollections.observableArrayList();List<Student> listDao;if(key.equals("getStudentsList()")) listDao=sDao.getStudentsList();else listDao=sDao.getCheckStudentsList(key);list.addAll(listDao);numberCol.setCellValueFactory(new PropertyValueFactory<>("id"));nameCol.setCellValueFactory(new PropertyValueFactory<>("name"));classCol.setCellValueFactory(new PropertyValueFactory<>("cNum"));telCol.setCellValueFactory(new PropertyValueFactory<>("tel"));mailCol.setCellValueFactory(new PropertyValueFactory<>("mail"));deleteCol.setCellValueFactory(new PropertyValueFactory<>("deleteButton"));updateCol.setCellValueFactory(new PropertyValueFactory<>("editButton"));tableView.setItems(list);}public void addStudent() {stage.close();AddController addController = new AddController();addController.show();}public void deleteStudent(int id) throws SQLException {String name=sDao.getStudentById(id).getName();Optional<ButtonType> result = showDeleteConfirmationDialog(name);switch (Objects.requireNonNull(result.orElse(null)).getButtonData()) {case YES:try {sDao.delete(id);} catch (SQLException se) {se.printStackTrace();}stage.close();show();case CANCEL_CLOSE:default:}}public void checkStudent() throws SQLException {String keyword=checkID.getText();if(keyword.equals("")) message.setText("查询输入姓名不能为空!");else getStudentList(keyword);}public void updateStudent(int id){stage.close();updateId=id;UpdateController updateController = new UpdateController();updateController.show(id);}private void saveFile() throws SQLException {File textFile;FileChooser fileChooser = new FileChooser();fileChooser.setTitle("导出到文件");fileChooser.setInitialFileName(".txt");fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("文本文档", "*.txt"));textFile = fileChooser.showSaveDialog(stage);if(textFile!=null){List<Student> listDao=sDao.getStudentsList();fileName.setText(textFile.getName());try(PrintWriter writer = new PrintWriter(textFile)) {for(Student s:listDao){writer.write(s.toString()+"\n");}} catch(FileNotFoundException e) {e.printStackTrace();}}}private Optional<ButtonType> showDeleteConfirmationDialog(String name) {ButtonType sure = new ButtonType("确定", ButtonBar.ButtonData.YES);ButtonType cancel = ButtonType.CANCEL;Alert alert = new Alert(Alert.AlertType.NONE, "你确定删除“ " + name +" ”及其相关信息吗?", sure, cancel);alert.setTitle("“删除”");alert.initOwner(stage);alert.initStyle(StageStyle.UTILITY);return alert.showAndWait();}private Alert createAboutDialog() {message.setText("about");Alert aboutDialog = new Alert(Alert.AlertType.NONE);DialogPane dialogPane = new DialogPane();dialogPane.setMaxHeight(Region.USE_PREF_SIZE);dialogPane.setMaxWidth(Region.USE_PREF_SIZE);dialogPane.setMinHeight(Region.USE_PREF_SIZE);dialogPane.setMinWidth(Region.USE_PREF_SIZE);dialogPane.setPadding(new Insets(10));dialogPane.setHeaderText("通讯录系统\n"+ "版本 1.0 \n"+ "© 2020 yfl。保留所有权利。\n");dialogPane.getButtonTypes().add(ButtonType.OK);aboutDialog.initOwner(stage);aboutDialog.initStyle(StageStyle.UTILITY);aboutDialog.setTitle("关于“通讯录系统”");aboutDialog.setDialogPane(dialogPane);return aboutDialog;}
}

欢迎打扰

IDEA+MySQL+JavaFX之通讯录系统相关推荐

  1. Java~通讯录系统

    Java~通讯录欢迎各位 1.需求分析 2.概要设计 2.1功能模块结构图 2.2业务流程图 3 运行环境 4 开发工具和编程语言 5 详细设计 5.1 数据库设计 5.2 类的设计 5.3登录 5. ...

  2. Java课设-简单的通讯录系统(增删改查连接数据库)

    一.题目介绍 二.实验思路 这里主要是运用到了jdbc来连接数据库,而在数据库中存在的是通讯录的记录,有id,姓名,手机号,创建时间,修改时间.同时使用的是swing的来做可视化界面,其中运用到了弹窗 ...

  3. 基于SpringBoot+Redis的JAVA+SQL电子通讯录系统

    基于SpringBoot+Redis的JAVA+SQL电子通讯录系统 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释. 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 代码已经上传 ...

  4. php111个人备忘录通讯录系统

    本备忘录通讯录系统主要运用PHP技术和MySQL数据库原理来设计网站. 本系统主要有三个模块:用户模块,事务模块和维护模块.①用户模块:用户分为普通用户和管理员用户,普通用户需要填写自己的个人信息,查 ...

  5. 基于mysql的手机通讯录系统设计_手机通讯录管理系统的设计与实现(MyEclipse,MySQL)...

    手机通讯录管理系统的设计与实现(MyEclipse,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文12000字,程序代码,MySQL数据库) 手机通讯录得使用大大减少了查找过 ...

  6. Eclipse+Java+Swing+Mysql实现电影购票系统【建议收藏】

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 5.工程截图 二.系统展示 1.注册系统 2.登录系统 3.用户-欢迎界面 4.用户-影片排行榜 5.用户-购票信息 6.用户 ...

  7. 苹果手机通讯录java代码_求通讯录系统

    求通讯录系统 老师要求我们做作业,题目是做一个同学通讯录系统,用java语言写. 功能:控制台上进行同学信息的增删改查,比如录入:张三,1365541646,上海,乒乓球.唱K:王五,12345455 ...

  8. c c mySQL机票设计_期末课程设计之 c++操作mysql完成机票预订系统(vc 6.0配置mysql环境)...

    本次大二期末的课程设计题是 完成一个机票预订系统,主要方法是通过c++函数操作mysql数据库来实现系统的功能,程序中还是有些许不足,在此传上请多多指教(毕竟小菜鸟). 程序复制到vc 6.0(原因是 ...

  9. ios开发基础之通讯录系统实战-20

    ios开发基础之通讯录系统实战 基础知识 OC 基础 segue 的使用.delegate 代理的使用 自定义代理.面向对象思想 沙盒容器的数据持久化方案, controller 之间的跳转 ,登录方 ...

最新文章

  1. 当AD服务器置于防火墙内时,所需开放的端口
  2. 聊聊、Zookeeper 客户端 Curator
  3. 【Day04】介绍防抖节流原理、区别以及应用,并用 JavaScript 进行实现
  4. 直接在低版本IE6/7/8浏览器中使用HTML5的audio和video标签播放视频音频的办法
  5. php实现的进度条功能示例,PHP 进度条函数的简单实例
  6. Nginx下载及安装详细步骤
  7. 建筑装饰毕业论文题目
  8. 逆流而上:计算机专业图书破圈营销,这个直播间做到了
  9. 沧海云帆服务器哪里的,11月沧海云帆大区天涯合璧 合服服务器公告
  10. c# 中通快递对接_C# .net实现中通快递单号查询 快递鸟API接口
  11. 2012年***名单。
  12. 错误 C1041 无法打开程序数据库“xxx\Debug\core142.pdb”
  13. Windows10 系统安装微软商店(ms-windows-store)
  14. failed to open mysql_mysql解决fail to open file的方法
  15. 从全球顶级数据库大会 SIGMOD 看数据库发展趋势
  16. 快速理解Raft之日志复制(肝了两千五百字)
  17. java文件压缩与解压_Java实现文件压缩与解压
  18. 中国石油大学《化工原理二》
  19. laravel安装 nwidart/laravel-modules 出现的问题
  20. [行路难]——开始漫漫编程路

热门文章

  1. js调用linux命令行,shelljs
  2. set的三种遍历方式-----不能用for循环遍历(无序)
  3. 计算机视觉这个专业怎么样?
  4. ASP.NET的隐藏功能[关闭]
  5. C++语言学习(十四)——C++类成员函数调用分析
  6. http响应最大时长 nginx_请问一下该如何用nginx 设置响应时间?
  7. 关于springmvc项目一加入validation-api包就报错的解决方法
  8. [水晶报表]水晶报表数据库登陆问题
  9. 电路版设计的先期工作
  10. 待我兵临城下,许你半世繁华