Re: Cannot add Rows java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
 
In article 
<841f1b0a-d0d8-483d-b3f0-991ab2927691@a27g2000prj.googlegroups.com>,
 hon123456 <peterhon321@yahoo.com.hk> wrote:
I got the following exception when I try to press Enter in the cell in
order to add a row when the Enter is pressed.
Exception in thread "AWT-EventQueue-0"
java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
I get the same result as markspace. If I use an unbound key, I get your 
result. The problem is invoking fireTableRowsInserted() for a second 
time in addRow(). I'm not sure why you override addRow(), which already 
provides the required notification.
I'm not sure of your goal, but here's a simplified example of adding a 
row to a DefaultTableModel via mouse or keyboard:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class NumericColumnTester extends JFrame {
    private DefaultTableModel model_001 = new DefaultTableModel();
    private int i;
    public NumericColumnTester() {
        String[] header = {"Text", "Num 1", "Num 2"};
        model_001.setColumnIdentifiers(header);
        model_001.addRow(nextRow());
        model_001.addRow(nextRow());
        JTable table = new JTable(model_001);
        table.setRowSelectionAllowed(false);
        JScrollPane scrollPane = new JScrollPane(table);
        this.add(scrollPane);
        this.add(new JButton("Add Row") {
            {
                addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        model_001.addRow(nextRow());
                    }
                });
            }
        }, BorderLayout.SOUTH);
        table.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                int key = e.getKeyCode();
                System.out.println(" Key: " + KeyEvent.getKeyText(key));
                if (key == KeyEvent.VK_F16) {
                    model_001.addRow(nextRow());
                }
            }
        });
    }
    private Object[] nextRow() {
        return new Object[] {
            Character.valueOf((char)('a' + i++)),
            Integer.valueOf(i),
            String.valueOf(i)
        };
    }
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new NumericColumnTester();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
-- 
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>