如何在NetBeans中编写jbutton的动作侦听器?

问题描述

我正在为我的(IB)计算机科学项目使用Java NetBeans编程库存管理系统。我的客户生产5种不同的阀门,该软件应允许在MysqL DB中添加删除和更改每个阀门的组件记录。由于每个阀门的任务都相似,因此我创建了一个名为“ Stock_interface”的父类,并使用继承将属性传递给每个“ valve”子类。我在子类中重写了某些方法,例如update();但是,根本不使用覆盖更新按钮的方法,因此,当用户更新任何记录时,它会在主表中而不是MysqL中所需的“阀”表中更改。 我不确定该怎么做需要帮助。老实说,我是Java和OOP概念的新手,因此无法在网上搜索答案。

这是父类中update方法代码

public void Update(){
    Connection conn = null;
    Statement st = null;
    DefaultTableModel model = (DefaultTableModel) Stock_table.getModel();
    int rcount = model.getRowCount();
    try {
        Class.forName(jdbcDriver);
        conn = DriverManager.getConnection(dbURL,username,password);
        String sql = "INSERT INTO valve_stock.filler (Component_name,Req_per_valve,In_Stock,Unit_cost,PO_bal,Exp_dispatch) VALUES(?,?,?) ";
        //String s = "UPDATE valve_stock.filler SET Component_name=?,Req_per_valve=?,In_Stock=?,Unit_cost=?,PO_bal=?,Exp_dispatch=?";
        PreparedStatement pst = conn.prepareStatement(sql);
        pst.setString(1,cp_name.getText());
        pst.setInt(2,Integer.parseInt(req_valve.getText()));
        pst.setInt(3,Integer.parseInt(stocknum.getText()));
        pst.setFloat(4,Float.parseFloat(unitcost.getText()));
        pst.setInt(5,Integer.parseInt(pobal.getText()));
        pst.setInt(6,Integer.parseInt(expdispatch.getText()));
        pst.executeUpdate();
        JOptionPane.showMessageDialog(null,"Record Updated Succesfully");
        show_components();
        conn.close();
    } catch (sqlException ex) {
        Logger.getLogger(Stock_interface.class.getName()).log(Level.SEVERE,null,ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Stock_interface.class.getName()).log(Level.SEVERE,ex);
    }
    bal_calculation();
    reqbal_calc();  
}

private void b_updateActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // Todo add your handling code here:
    //if (Class.)
    Update(); 
}         

这是子类之一的代码片段,其中显示了覆盖的更新方法

private void b_updateActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // Todo add your handling code here:

    Connection conn = null;
    Statement st = null;
   
    try {
        Class.forName(jdbcDriver);
        conn = DriverManager.getConnection(dbURL,password);
        String sql = "INSERT INTO valve_stock.s_12 (Component_name,?) ";
        PreparedStatement pst = conn.prepareStatement(sql);
        pst.setString(1,ex);
    }
        
    reqbal_calc(); 
}

请注意上面两种方法在字符串'sql'中的区别:第一种是“ from valve_stock.filler”,第二种是“ from valve_stock.s_12”。但是在子类中,不使用第二种方法,因为单击更新按钮时,它仅调用第一种方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)