1

I have 2 Classes. HardwareMenu and PurchaseBill. After I click Purchase Product or Purchase Bill from the HardwareMenu class Im redirected towards the Purchase Bill class and i get the this error "null null java.lang.NullPointerException" I am using JDK 8 Using UcanAccess to connect with MS Access 2007.

Exception

java.lang.NullPointerException
    at PurchaseBill$1.focusGained(PurchaseBill.java:156)
    at java.awt.AWTEventMulticaster.focusGained(Unknown Source)
    at java.awt.Component.processFocusEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Sour
ce)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
      rivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
   rivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
    rivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Here is the code

class HardwareMenu extends A implements ActionListener//,MouseListene
{  
JMenuBar mb;    
JMenu menuAdd,menuMaster,menuMaintenance,menuReport,menuUserAc,menuHelp;    
JMenuItem mItemCust,mItemAgent,mItemNewAc,mItemAccount,mItemEmp,mItemTrans,mItemEnq;                                                                                               
JMenuItem mRptAccTypes,mRptAgent,mRptCustTransaction,mRptCustAcc,mRptReorderSTK,mRptSafetySTK;                                                                                             
JMenuItem mItemChangePass,mItemLogOff,mItemExit,mItemAboutUs,mItemCont;

JButton b1=new JButton("Sale Product");
JButton b2=new JButton("Purchase Product");
JButton b3=new JButton("Show Reorder Level");
JButton b4=new JButton("Show Safety Level");
JButton b5=new JButton("Logoff");
JButton b6=new JButton("Exit");
JLabel l1[]=new JLabel[11];
JPanel pt=new JPanel();
//Thread th=new Thread(this);
//String stitle[]={"A","iSva","naI "," ha","D-","vao","A","r "," isa","sTI","ma"};
JLabel stitl;
public HardwareMenu()
{
    setLayout(null);


    stitl=new JLabel("Balaji Enterprises");
    stitl.setFont(new Font("Arial", Font.BOLD,50));
    //stitl.setForeground(new Color(255,0,0));
    mb=new JMenuBar();
    //Create Menu
    mb.setFont(new Font("Arial",Font.BOLD,20));
    //Create MenuItems
    menuAdd=new JMenu("Add");
        mItemCust=new JMenuItem("Suppiler");

    //Master
    menuMaster=new JMenu("Transaction");
        mItemNewAc=new JMenuItem("Sale Bill");
        mItemTrans=new JMenuItem("Purchase Bill");

    //Maintenance

        menuMaintenance=new JMenu("Maintenance");
        mItemAccount=new JMenuItem("Stock");
        mItemEmp=new JMenuItem("Employee");

    //Report
    menuReport=new JMenu("Report");
        mRptAccTypes=new JMenuItem("Stock Report");


    menuUserAc=new JMenu("User Account");
        mItemChangePass=new JMenuItem("Change Password");   
        mItemLogOff=new JMenuItem("Log Off");   
        mItemExit=new JMenuItem("Exit");





    //MenuBar Set
    setJMenuBar(mb);
    mb.setFont(new Font("",Font.BOLD,18));

    //AddMenus
    mb.add(menuAdd);
        //subMenu of Add
        menuAdd.add(mItemCust);         mItemCust.addActionListener(this);  menuAdd.addSeparator();
        menuAdd.add(mItemEmp);      mItemEmp.addActionListener(this);   menuAdd.addSeparator();


    mb.add(menuMaster);
        //subMenu of Master
        menuMaster.add(mItemNewAc);     mItemNewAc.addActionListener(this); menuMaster.addSeparator();
        menuMaster.add(mItemTrans);     mItemTrans.addActionListener(this); 


        mb.add(menuMaintenance);
        //Submenu for Maintenance
        menuMaintenance.add(mItemAccount);  mItemAccount.addActionListener(this);   


    mb.add(menuReport);
        //submenu for report
        menuReport.add(mRptAccTypes);       mRptAccTypes.addActionListener(this);   menuReport.addSeparator();




    mb.add(menuUserAc);
        //submenu for UserAc 
        menuUserAc.add(mItemChangePass);    mItemChangePass.addActionListener(this);    menuUserAc.addSeparator();
        menuUserAc.add(mItemLogOff);        mItemLogOff.addActionListener(this);    menuUserAc.addSeparator();
        menuUserAc.add(mItemExit);          mItemExit.addActionListener(this);  




      //Panels-----------------------------------------------------------------------
    p1.setBounds(0,0,screen.width,150);
       //       for(i=0;i<11;i++)
      //            l1[i].addMouseListener(this);
     //         
     //     for(i=0;i<11;i++)
     //         p1.add(l1[i]);
     //     
        p1.add(stitl);
        add(p1);
         p2.setBounds(0,150,screen.width,50);


    p2btn.setLayout(new GridLayout(1,6,50,1));  
    p2btn.add(b1);  b1.addActionListener(this);     
    p2btn.add(b2);  b2.addActionListener(this);             
    p2btn.add(b3);  b3.addActionListener(this);             
    p2btn.add(b4);  b4.addActionListener(this);         
    p2btn.add(b5);  b5.addActionListener(this);         
    p2btn.add(b6);  b6.addActionListener(this);         
    p2.add(p2btn);


    p3.setBounds(0,200,swidth,sheight);


    add(p2);
    p2.add(p2btn,new BorderLayout().CENTER);
    add(p3);

    setSize((screen.width),(screen.height-30));
    setLocation(0,0);
    setVisible(true);
//      th.start();

}


public void actionPerformed(ActionEvent a)
{
    //Short cut bUttons
    if(a.getSource()==b1)
        new Bill();
    if(a.getSource()==b2)
        new PurchaseBill();
    if(a.getSource()==b3)
        new ReportReorderLevel();
    if(a.getSource()==b4)
        new ReportSafetyLevel();
    if(a.getSource()==b5)
        {
            new Log();
            dispose();
        }
    if(a.getSource()==b6)
        System.exit(0);

    //Add
    if(a.getSource()==mItemCust)    
    {
        new AddSup();   
    }
    if(a.getSource()==mItemEmp) 
    {
        new AddEmp();   
    }

    //if(a.getSource()==mItemAgent) 
    {
    //  new Enquiry();  
    }
    //Transaction
    if(a.getSource()==mItemNewAc)   
    {
        new Bill(); 
    }
    if(a.getSource()==mItemTrans)   
    {
        new PurchaseBill(); 
    }

        //Maintenance

    if(a.getSource()==mItemAccount) 
    {
        new Stock();    
    }


            //Report  
    if(a.getSource()==mRptAccTypes) 
    {
        new ReportStock();   
    }


    //User Account
    if(a.getSource()==mItemChangePass)  
    {
        new ChangePassword();   
    }
    if(a.getSource()==mItemLogOff)  
    {
        new Log();  
        dispose();
    }
    if(a.getSource()==mItemExit)    
    {
        System.exit(0);
    }



}
    public void mouseReleased (MouseEvent me)
{
    System.out.println("d");
}
public void mouseClicked (MouseEvent me)
{
    System.out.println("d");
}
public void mousePressed (MouseEvent me)
{
    System.out.println("d");
}
public static void main(String args[])
{
    new HardwareMenu();
}

}

        public class PurchaseBill extends A implements ActionListener
        {       

 static float total=0.0f;
 static int r;
 JTextField[] inputText1=new JTextField[20];
 String h[]={"Equipment ID","Equipment Name","Quantity","Price"};
 JScrollPane jpane;
 JTable jt;
 DefaultTableModel model;
 String data[][] = {{""}};
 String col[] = {"Equipment ID","Equipment Name","Quantity","Price"};
 int rcnt=0;
 //JButton b1=new JButton("...");

public PurchaseBill()
{   
    setLayout(null);
//  String  record[][]=new String [0][5];
System.out.println("Reached 2");

      model = new DefaultTableModel(data,col);
      jt = new JTable(model);

    //jt=new JTable(record,h);
    jpane=new JScrollPane(jt,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    //jpane.setBackground(new Color(160,200,100));
    jpane.setBounds(0,0,200,200);
    jt.setAutoCreateRowSorter(true);

    add.addActionListener(this);
    rem.addActionListener(this);
    //Title     
//  title=new JLabel("Bill Details",JLabel.CENTER);
//  title.setFont(new Font("Cambria", Font.BOLD, 14));  

    infoLabel[1] = new JLabel("Purchase ID",JLabel.LEFT);
    infoLabel[2] = new JLabel("Suppiler ID",JLabel.LEFT);
    infoLabel[3] = new JLabel("Suppiler Name",JLabel.LEFT);

    infoLabel[4] = new JLabel("Purchase Date",JLabel.LEFT);


    infoLabel[6] = new JLabel("Equipment Name",JLabel.LEFT);
    infoLabel[7] = new JLabel("Total",JLabel.LEFT);
    infoLabel[8] = new JLabel("Qunatity",JLabel.LEFT);
    infoLabel[9] = new JLabel("Rate(in Rs-/)",JLabel.LEFT);

    inputText1[1] = new JTextField(20);
    inputText1[2] = new JTextField(20);
    inputText1[3] = new JTextField(20);
    inputText1[4] = new JTextField(15);
    System.out.println("Reached 3");

    try
    {
    System.out.println("Reached 4");
        rs=st.executeQuery("select EName from Stock");
        System.out.println("Reached 5");
        while(rs.next())
            eqname.add(rs.getString(1));
            System.out.println("Reached 6");

    }catch(Exception e){e.printStackTrace();}

    inputText[7] = new JTextField(10);inputText[7].setText(new Float(total).toString());    
    inputText[8] = new JTextField(10);  
    inputText[9] = new JTextField(10);  

    //Customer Bill Info Panel
    p1.setLayout(new GridLayout(5, 2,0,3));
    p1.add(infoLabel[1]);        p1.add(inputText[1]);  
    p1.add(infoLabel[2]);        p1.add(inputText[2]);  
    p1.add(infoLabel[3]);        p1.add(inputText[3]);  
    p1.add(infoLabel[4]);        p1.add(inputText[4]);  

   //btn panel
   btn.setLayout(new GridLayout(3,1,0,2));
   //btn.add(b1);b1.addActionListener(this);

   mid.add(p1,BorderLayout.EAST);
    mid.add(btn,BorderLayout.WEST); 
    mid.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK,Color.BLACK),"Account Details"));




    //panels for purchase list        
    p2.setLayout(new FlowLayout());//GridLayout(1,7)
    p2.add(infoLabel[6]);       p2.add(eqname);
    p2.add(infoLabel[8]);       p2.add(inputText[8]);
    p2.add(infoLabel[9]);       p2.add(inputText[9]);
    p2.add(add);                p2.add(rem);

    //panel for grid
    //p3.setLayout(new GridLayout(1,1));
    //jpane.setBounds(10,20,20,20);
    //p3.add(jpane);  

    //Add Buttons to Panels
    p4.setLayout(new FlowLayout());
    p4.add(save);       save.addActionListener(this);
    p4.add(reset);      reset.addActionListener(this);  
    p4.add(OKButton);   OKButton.addActionListener(this);
    p4.add(infoLabel[7]);
    p4.add(inputText[7]);


    mid.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK,Color.BLACK),"Cutomer Details"));
    p.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK,Color.BLACK),"Purchease Details"));             
    //p3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.BLACK,Color.BLACK),"")); 


     //purdet.setLayout(new  BorderLayout());

    p.setLayout(new BorderLayout());
    p.add(p2,BorderLayout.NORTH);
    p.add(jpane,BorderLayout.CENTER);
    p.add(p4,BorderLayout.SOUTH);      // p.add(jpane,BorderLayout.CENTER);

    this.setLayout(new GridLayout(2,1));


   //   p123.add(p1);

    add(mid,BorderLayout.NORTH);
    add(p,BorderLayout.SOUTH);


    //Auto Genrating Book ID
    System.out.println("Reached 7");
    id();

    //date/time*********************
     Dt f=new Dt();
     inputText[4].setText(d);
    //************************

    //Read Only**********************
    inputText[1].setEnabled(false);
    inputText[4].setEnabled(false);
    //**************************    
    //Team ID************************************
    inputText[2].addFocusListener(new FocusAdapter() 
    {   public void focusGained(FocusEvent e) 
        {
        try {
                System.out.println(Supp_id+" "+Supp_name);
                inputText[2].setText(Supp_id.toString());
                inputText[3].setText(Supp_name.toString());

            }catch (Exception nfe) 
            {
              System.out.println(nfe);
              getToolkit().beep();
              inputText[2].requestFocus();
            }
          }
    });
    //**************************************************        

    //Window Arrangment
    setTitle("Purchase Details");
    setSize(800,400);
    setLocation(320,200);
    setVisible(true);
    //setResizable(false);




}

public void id()
{

    //Auto Genrating Book ID
try
{   

   System.out.println("Reached 8");
    str="select * from Purchase";
    rs=st.executeQuery(str);
    System.out.println("Reached 9");
    int rcount=0;
    while(rs.next())
      rcount++;
    System.out.println("Reached 10");
    if(rcount==0)
        inputText[1].setText("PUR00001");
    else
    {
        rcount=rcount+1;
        if(rcount>0)
        inputText[1].setText("PUR0000"+rcount);
        if(rcount>9)
            inputText[1].setText("PUR000"+rcount);
        if(rcount>99)
            inputText[1].setText("PUR00"+rcount);
        if(rcount>999)
            inputText[1].setText("PUR0"+rcount);
        if(rcount>999)
            inputText[1].setText("PUR"+rcount);
    }

}catch(Exception adde){System.out.println("AUTO NUMBERING"+adde);}

}

public void cleartext()
{   
    for(int i=2;i<=6;i++)
        inputText[i].setText("");
}

 public void actionPerformed(ActionEvent ae)
        {   
    //      if(ae.getSource()==b1)
    //      {
        //      new ReportSupplier();
        //  }

            if(ae.getSource()==add)
            {
                String BillID=inputText[1].getText();
                String date=inputText[2].getText();
                String name=inputText[3].getText(); 
                String PhoneNo=inputText[4].getText();
                String EquiID="";

                String EqID=eqname.getSelectedItem();
                String Qty=inputText[8].getText();
                String Rate=inputText[9].getText();
                try
                {

                    str="select * from Stock where EName='"+EqID+"'";
                    rs=st.executeQuery(str);
                    rs.first();
                    EquiID=rs.getString(1); 
                }
                catch(Exception ee)
                {
                    System.out.println(ee);
                }
                Validate v= new Validate();
                if(v.checkBlank(Qty,this,"Quantity"))
                        return;
                if(v.checkBlank(Rate,this,"Rate"))
                        return;
                //For Number validation
                if(v.checkOnlyNumber(Qty,this,"Quantity"))
                    return;
                if(v.checkOnlyNumber(Rate,this,"Rate"))
                    return;

                try{

                    int rr=(jt.getRowCount())-1;

                    jt.setValueAt(EquiID,rr,0);//Equip ID
                    jt.setValueAt(EqID,rr,1);//name of Equipment
                    //jt.setValueAt(rsDesc,rr,2);//compnay
                    jt.setValueAt(Qty,rr,2);//qty
                    jt.setValueAt(Rate,rr,3);//rate
                    rr++;

                    model.insertRow(jt.getRowCount(),new Object[]{"","","","",""});
                    System.out.println("After new ROW COUNT === "+jt.getRowCount());

                    total=total+Integer.parseInt(Qty)*Float.parseFloat(Rate);
                    inputText[7].setText(""+total);
                //                      int n=st.executeUpdate("insert into purchase 
                values('"+BillID+"','"+ClothID+"',"+Quantity+","+Rate+")");
                //                      if(n>0)
                    //  JOptionPane.showMessageDialog(this,"Item Inserted in Purchease Master");
                   }catch(Exception ex){ex.printStackTrace();}
            }
            if(ae.getSource()==rem)
            {
                int rd=jt.getSelectedRow();
                Object chkItem=jt.getValueAt(rd,0);

                    System.out.println(""+chkItem);//Equip ID
                if(chkItem==null)
                {
                    JOptionPane.showMessageDialog(this,"Please select Items!");
                    return;
                }
                else
                {
                    total-=Float.parseFloat(jt.getValueAt(rd,2).toString())* Float.parseFloat(jt.getValueAt(rd,3).toString());                  
                    inputText[7].setText(""+total);

                     model.removeRow(rd);


                }   

            }   
            if(ae.getSource()==OKButton)
            {
                dispose();
            }
            if(ae.getSource()==reset)
            {
                cleartext();

            }
            if(ae.getSource()==save)
            {
                    String BillId=inputText[1].getText();
                    String suppid=inputText[2].getText();
                    //String phno=inputText[3].getText();
                    String date=inputText[4].getText();
                    String tot=inputText[7].getText();


                Validate v= new Validate();
                //validation for blank field
                if(v.checkBlank(suppid,this,"Name"))
                            return;                 

            //  if(v.checkBlank(phno,this,"Phone No"))
                //  return;

                //validation for text only
                //  if(v.checkOnlyText(cname,this,"Name"))  
                //      return;     

                //validation for Numbers
                //  if(v.checkOnlyNumber(phno,this,"Phone No")) 
                //      return;

                if(tot.equals("0.0"))   
                {
                    JOptionPane.showMessageDialog(this,"Total is Zero!");
                    return;
                }       
                System.out.println("SAVE COUNT "+(jt.getRowCount()-1));
                if((jt.getRowCount()-1)==0) 
                {
                    JOptionPane.showMessageDialog(this,"No Item Purcheased!");
                    return;
                }   


                try
                {
                    String sst="insert into Purchase values('"+inputText[1].getText()+"','"+inputText[2].getText()+"','"+inputText[4].getText()+"',"+inputText[7].getText()+")";
                    System.out.println(sst);

                    int dbil=st.executeUpdate(sst);
                    //  batchSt.addBatch(sst);
                    if(dbil>0)
                    {                       
                        //Purchase List
                        int loopCnt=(jt.getRowCount()-1),i=0;
                        String str[]=new String[loopCnt];
                        String sQtyU="";

                        while(i<loopCnt)
                        {
                            int dd=0;
                            try
                            {                       
                            sQtyU="UPDATE Stock SET Quantity = Quantity+"+Integer.parseInt(inputText[8].getText())+", UnitPrice="+jt.getValueAt(i,3)+" WHERE (((Stock.[EquipmentID])='"+jt.getValueAt(i,0)+"'))";
                            //  sQtyU="update Stock set Qty=Qty-"+Integer.parseInt(jt.getValueAt(i,3).toString())+" where EquipmentID='"+jt.getValueAt(i,0).toString()+"'";
                                System.out.println(sQtyU);
                                dd=st2.executeUpdate(sQtyU);
                            }
                            catch(Exception er)
                            {
                                System.out.println("Qty Update Err"+er);
                            }
                        //  if(dd>0)
                        //  {
                                str[i]="insert into PurchaseList values('"+inputText[1].getText()+"','"+jt.getValueAt(i,0).toString()+"',"+jt.getValueAt(i,2).toString()+","+jt.getValueAt(i,3).toString()+")";
                                System.out.println(str[i]);
                                //batchSt.addBatch(str[i]);
                                st.executeUpdate(str[i]);
                                i++;
                        //  }
                        }
                        //  int[] updCnt = st.executeBatch();
                        //  System.out.println("updCnt[0]");
                       // con.commit() ;
                       // System.out.println("Trans...sucessful");

                         JOptionPane.showMessageDialog(this,"Successfully Stored..!!");
                         dispose();
                    }

                }
                catch(BatchUpdateException ert)
                {
                    System.out.println("Error for save Buying list "+ert);
                    int[] counts = ert.getUpdateCounts();

                    for (int i=0;i<counts.length; i++) 
                    {
                            System.out.println("Statement["+i+"] :"+counts[i]);
                    }
                    try
                    {
                        con.rollback() ;
                    }
                    catch(Exception e){e.printStackTrace();}
                }
                 catch (SQLException e1) {e1.printStackTrace(); }                   

        }

        }

public static void main(String args[])
{
            System.out.println("Reached 1");
            new PurchaseBill();
}

}

AmeyaG
  • 176
  • 1
  • 1
  • 10

0 Answers0