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连接问题

//URL指向要访问的数据库名
		url="jdbc:mysql://localhost:3306/cateringsystem?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";

URL要这么写,涉及到很多修正问题啥的

咱也不懂,咱也不敢问

//数据库连接参数
	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;

用到的基本参数

还有一个问题

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 @ 2019-03-25 21:26  zzRh_5479  阅读(426)  评论(0编辑  收藏  举报