Java & Mysql 餐饮管理系统 过程心得记录
------------------------------------------Have a Good Day~----------------------------------
2019.3.25
窗口的初步搭建
涉及:
JFrame 窗口
JPanel 面板组件 (暂时不知道具体咋实现的 日后搞懂再补充)
不同窗口的转换 (暂时不知道咋关 这就很尴尬)
JFrame 窗口搭建
Toolkit kit=Toolkit.getDefaultToolkit(); //获取当前屏幕的大小 Dimension screenSize=kit.getScreenSize(); int screenHight=screenSize.height; int screenWight=screenSize.width; //窗口大小 setSize(screenWight/2,screenHight/2); setLocationByPlatform(true); //窗口位置 setLocation(550,150);
icon 小图标的获取
//获取图标 Image img=new ImageIcon("F:\\Java_program\\Catering_management_system\\src\\catering_Management\\bin\\icon.png").getImage(); setIconImage(img);
background 背景设置
//背景图片设置 public void paint(Graphics g) { File file = new File("F:\\Java_program\\Catering_management_system\\src\\catering_Management\\bin\\background.png");
//异常处理~ try { BufferedImage image=ImageIO.read(file); g.drawImage(image,0,0,null); } catch(Exception e) { e.printStackTrace(); } }
然后是最主要的
窗口转换
//顾客按键 进入顾客界面 JButton customerButton= new JButton("Customer"); //等一手 lambda语句简化~~~~ customerButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //创建一个顾客窗口 Customer customerWindow = new Customer(); customerWindow.setTitle("Welcome~"); customerWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); customerWindow.setVisible(true); //当前窗口关闭 } } );
我觉得可以lambda简化~~~
我觉得是这么实现的:
首先 JButton 一个按键
然后对这个按键有一个 ActionListener 事件响应
对应的事件为创建一个 Customer 对象
Customer实际上也继承了 JFrame 也是一个窗口类
然后创建Customer对象就等于创建了一个新的窗口
再将当前窗口关闭即可~
2019.3.26
lambda 语句实现:
customerButton.addActionListener(e-> { //创建一个顾客窗口 Customer customerWindow = new Customer(); customerWindow.setTitle("Welcome~"); customerWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); customerWindow.setVisible(true); //当前窗口关闭 closeThis(); });
具体lamda 语句以后补充
现在只知道当一个类只有一种方法需要实现时,不需要新建对象,直接lamda实现就好
然后窗口关闭:
/* * 窗口关闭 调用父类方法写在本身的方法中直接调用 * 在点击Button 触发的 ActionListener 中 创建的是其他类 * 无法直接调用JFrame 中关闭窗口的方法 */ public void closeThis() { super.dispose(); }
定义这个函数的原因是
在CustomerButton 中继承的是ActionListener 无法调用dispose方法
只能新建一种方法实现父类的 dispose
然后在
CustomerButton.addActionListener中直接调用这个方法
因为是在一个类中
所以语法是合法的
2019.3.27
解决方案 ImagePanel类不再继承Panle 类
改为继承JPanle类
然后重载 JPanle类中的PaintComponent方法
实现对组件背景的绘制
2.26提到的 为什么new ImagePanel 并且重载 PaintComponent
是因为我们要在内容窗格上进行各种组件的添加
而new ImagePanel等于创建了一个和JFrame窗口等大的内容窗格并对JFame窗口覆盖
所以要对JPanle 中的PaintComponent方法重载 来获取内容窗格的背景
2019.4.1
简化了Customer的代码
添加了选择框和提示文本
2019.4.26更新
最近遇到的问题汇总一下
JAVA&Mysql连接问题
1 2 | //URL指向要访问的数据库名 url= "jdbc:mysql://localhost:3306/cateringsystem?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false" ; |
URL要这么写,涉及到很多修正问题啥的
咱也不懂,咱也不敢问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //数据库连接参数 Connection con; String driver; String url; String user; String password; //创建statement对象,执行SQL语句 Statement satement,addsatement; //创建PreparedStatement对象,执行插入语句 PreparedStatement prsq; //要执行的SQL语句 String dql,dml; //ResultSet类,用来存放获取的结果集 ResultSet rs; |
用到的基本参数
还有一个问题
1 | rs= satement.executeQuery(dql); |
一个statement 对象可以对应多个resultset对象
不过对其中一个resultset进行操作的时候 其他的都是关闭的
也就是不能同时对同一个statement的resultset对象操作
我的解决办法是创捷多个statement对象
稳得一匹~
然后就是一个类创建队对象数组的时候
比如这样
private JLabel[] line = new JLabel[20];
好像是只声明了空间
如果操作的话会出现
空指针异常
Exception in thread "AWT-EventQueue-0"
所以还要
line[index] = new JLabel();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!