As above screenshot;
When user selects Item and Item Name and click Add button, below scenarios happen:
- The selected Item,Item Name and cost retrieves from the MySQL database.
- Show Input Dialog to get qty from the user.
- After clicking OK to qty Input Dialog, Show Input Dialog to get Discount.
- After clicking OK to discount Input Dialog,the total is calculated and shows in the total Column.
But then shows the ArrayIndexOutOfBound error as:
java.lang.ArrayIndexOutOfBoundException: 1>=1
Then after selecting another Item and Item Name and doing the above process shows same error as:
java.lang.ArrayIndexOutOfBoundException: 2>=2
Also reset Qty, Discount, Total columns to be equal as the last row values.
Add button action performed method;
private void add_btnActionPerformed(java.awt.event.ActionEvent evt) {
int i=0;
int j=0;
String temp = (String) IDcombo.getSelectedItem();
String temp2 = (String) Namecombo.getSelectedItem();
String sql = "select ItemID,ItemName,CostPrice from druginfo where ItemID=?";
try {
pst=conn.prepareStatement(sql);
pst.setString(1, temp);
rs=pst.executeQuery();
addDataToTable(tableSale,DbUtils.resultSetToTableModel(rs));//this method for adding multiple lines in the table
IDcombo.setSelectedItem(null);
Namecombo.setSelectedItem(null);
exptxt.setText(null);
instock.setText(null);
//getting user input for selling qty
String Qty=JOptionPane.showInputDialog("Insert Selling Quantity :");
double sellingqty=Double.parseDouble(Qty);
//getting user input for specific item discount
String discount = JOptionPane.showInputDialog("Insert Item Discount");
double idiscount=Double.parseDouble(discount);
for(j=0;j<100;j++){
double icost =(double) tableSale.getModel().getValueAt(j,2);
System.out.println(icost);
//calculating Gross Total
double grosstotal = (sellingqty*icost)-idiscount;
System.out.println(grosstotal);
for(i=0;i<100;i++){
//setting qty input value to table sale
tableSale.getModel().setValueAt(sellingqty,i, 3);
//setting input value to table sale
tableSale.getModel().setValueAt(idiscount,i, 4);
//setting grosstotal value to table sale
tableSale.getModel().setValueAt(grosstotal,i, 5);
}
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "error "+ex);
ex.printStackTrace();
}
}
This is the Stack Trace;
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
at java.util.Vector.elementAt(Vector.java:474)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:664)
at com.bit.project.Newsale.add_btnActionPerformed(Newsale.java:720)
java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
at java.util.Vector.elementAt(Vector.java:474)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:664)
at com.bit.project.Newsale.add_btnActionPerformed(Newsale.java:720)

for(i=0;i<100;i++){loop ?ArrayIndexOutOfBoundsException1 >= 1mean there is only one row but you are accessing 1st index row mean 2nd row .but there is no 2nd row.you add new rows that's true but when you callgetValueAt()the cell should existfor(j=0; j< model.getRowCount(); j++). By the way, why are you doing those jobs in two nested for loops?