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();

 

posted @   zzRh_5479  阅读(431)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示