简体   繁体   English

删除我的JTable上的数据。 ArrayIndexOutOfBoundsException:0

[英]Deleting data on my JTable. ArrayIndexOutOfBoundsException:0

I'm having an error everytime I delete/add on my JTable. 每当我在JTable上删除/添加时,我都会出错。 It successfully deletes the row but whenever I will repopulate again my table my calling table_order() it shows up the error. 它成功删除了该行,但是每当我再次使用我的调用table_order()重新填充我的表时,它就会显示错误。 But when I update it it works fine. 但是,当我更新它时,它工作正常。 Can't figure it out why just a beginner. 无法弄清楚为什么只是初学者。

Heres my code for delete button: 这是我的删除按钮代码:

    String codev = code.getText();
    String namev = name.getText();
    String pricev = price.getText();
    String descv = desc.getText();


    try{
        conn = ConnectionDB.connectDB();
        String sql = "SELECT * FROM items WHERE item_code = '"+codev+"'";
        ps=conn.prepareStatement(sql);
        rs=ps.executeQuery();

        if(codev.equals("") || namev.equals("") ||pricev.equals("") || descv.equals("") || check.equals("")){
            JOptionPane.showMessageDialog(null, "Please fill up all fields.", "ERROR", JOptionPane.ERROR_MESSAGE);
        }

        else if(rs.next()){

           ps = conn.prepareStatement("DELETE FROM items WHERE item_code='"+codev+"'");
           int row = ps.executeUpdate();

                if(row == 1){
                    JOptionPane.showMessageDialog(this, "Item successfully deleted.", "SUCCESS", JOptionPane.INFORMATION_MESSAGE);
                    table_item.removeAll();
                    table_order();
                    reset();
                }  
        }

        else{
            JOptionPane.showMessageDialog(null, "Item doesnt exist. Please select item.", "ERROR", JOptionPane.ERROR_MESSAGE);              
       }

    }

    catch(SQLException | HeadlessException ex){
            System.out.println(ex);
    }

table_order: table_order:

    Queryy mq = new Queryy();
    ArrayList<Product> list = mq.BindTable();
    String[] columnName = {"Code","Name","Price","Description","Availability","Icon"};
    Object[][] rows = new Object[list.size()][6];


    for(int i = 0; i < list.size(); i++){
        rows[i][0] = list.get(i).getID();
        rows[i][1] = list.get(i).getName();
        rows[i][2] = list.get(i).getPrice();
        rows[i][3] = list.get(i).getDesc();
        rows[i][4] = list.get(i).getAvail();

        if(list.get(i).getMyImage() != null){

         ImageIcon image = new ImageIcon(new ImageIcon(list.get(i).getMyImage()).getImage()
         .getScaledInstance(150, 75, Image.SCALE_SMOOTH) );   

        rows[i][5] = image;
        }
        else{
            rows[i][4] = null;
        }

    }

    Modell model = new Modell(rows, columnName);
    table_item.setModel(model);
    table_item.setRowHeight(85);
    table_item.getColumnModel().getColumn(2).setPreferredWidth(45);
    table_item.getColumnModel().getColumn(3).setPreferredWidth(140);
    table_item.getColumnModel().getColumn(4).setPreferredWidth(45);
    table_item.getColumnModel().getColumn(5).setPreferredWidth(140);

It shows the error here in my model class: 它在我的模型类中显示了错误:

public Modell(Object[][] data, String[] columnName){
    this.rows = data;
    this.columns = columnName;
}

@Override
public Class getColumnClass(int column){
    if (column == 6){
        return Icon.class;
    }

    else{
        return getValueAt(0, column).getClass();
    }
}

/**
 *
 * @return
 */
@Override
public int getRowCount(){
    return this.rows.length;
}

/**
 *
 * @return
 */
@Override
public int getColumnCount(){
    return this.columns.length;
}

/**
 *
 * @param rowIndex
 * @param columnIndex
 * @return
 */
@Override
public Object getValueAt(int rowIndex, int columnIndex){
    return this.rows[rowIndex][columnIndex];
}

/**
 *
 * @param col
 * @return
 */
@Override
public String getColumnName(int col){
    return this.columns[col];
}

} }

error: 错误:

Exception in thread "AWT-EventQueue-0" 
java.lang.ArrayIndexOutOfBoundsException: 0
at orderingmanagementsystem.Modell.getValueAt(Modell.java:63)
at orderingmanagementsystem.Modell.getColumnClass(Modell.java:33)
at javax.swing.JTable.getColumnClass(JTable.java:2698)
at javax.swing.JTable.getCellRenderer(JTable.java:5674)
at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:682)
at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:580)
at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:364)
at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:275)
at javax.swing.JComponent.paintComponent(JComponent.java:780)
at javax.swing.JComponent.paint(JComponent.java:1056)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JViewport.paint(JViewport.java:728)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
at orderingmanagementsystem.Modell.getValueAt(Modell.java:63)
at orderingmanagementsystem.Modell.getColumnClass(Modell.java:33)
at javax.swing.JTable.getColumnClass(JTable.java:2698)
at javax.swing.JTable.getCellRenderer(JTable.java:5674)
at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:682)
at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:580)
at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:364)
at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:275)
at javax.swing.JComponent.paintComponent(JComponent.java:780)
at javax.swing.JComponent.paint(JComponent.java:1056)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JViewport.paint(JViewport.java:728)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
at javax.swing.JComponent.paint(JComponent.java:1042)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
at java.awt.Container.paint(Container.java:1975)
at java.awt.Window.paint(Window.java:3904)
at javax.swing.RepaintManager$4.run(RepaintManager.java:842)
at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

The for loop you've written 您编写的for循环

for(int i = 0; i < list.size(); i++){....}

change this to 更改为

for(int i = 0; i< list.size()-1;i++){.....}

I hope this will work. 我希望这会起作用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JTable中。 删除行。 消耗事件以免进一步调度 - JTable. Deleting rows. Consume the event to not get dispatched further Java的。 Swing JTable。 更改JTable中的数据并在表模型中调用自定义方法 - Java. Swing JTable. Changing data in a JTable and calling custom methods in the Table Model 从我的数据库中获取信息并将它们写入 JTable。 错误:java.lang.IndexOutOfBoundsException:索引:2,大小:2 - Getting the information from my database and write them in a JTable. Error: java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 ArrayIndexOutOfBoundsException将JTable数据插入SQL数据库 - ArrayIndexOutOfBoundsException inserting JTable data to SQL database jTable。 来自文本文件的row sorting() - jTable. row sorting() from text file 将AbstractTableModel实现到JTable。 如何添加方法? - Implementing AbstractTableModel to JTable. How to add the methods? 不能从jtable中删除重复项。 - Cant remove duplicates from jtable. 尝试将数据从JTable显示到控制台时出现ArrayIndexOutOfBoundsException错误 - Get ArrayIndexOutOfBoundsException error when try to display data from jtable to the console 如何在jtable中添加表头和滚动条。 java的 - How to Add Table header and Scrollbar in jtable. java ArrayIndexOutOfBoundsException:在JTable创建/ tablechanged上为-1 - ArrayIndexOutOfBoundsException: -1 on JTable creation/tablechanged
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM