Java- добавление новой строки в JTable в GUI

#java #indexoutofboundsexception

#java #исключение indexoutofboundsexception

Вопрос:

У меня есть простой графический интерфейс Java, который отображает пустую таблицу и несколько кнопок. Сейчас я пытаюсь добавить прослушиватель к одной из кнопок, которая добавит новую пустую строку (с редактируемыми ячейками) в таблицу в графическом интерфейсе.

Я использую следующий код, чтобы попытаться сделать это:

 JButton addBtn = new JButton("Add");
addBtn.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        System.out.println("'Add' button pressed. ");
        DefaultTableModel model = (DefaultTableModel)jEntityFilterTable.getModel();
        model.addRow(new Object[]{"Site", "Application", "Entity"});
        System.out.println("--- ActionListener added to 'addBtn' ---");
    }
});
 

Однако, когда я нажимаю кнопку, я получаю java.lang.ArrayIndexOutOfBoundsException . В нем говорится, что это происходит в следующей строке:

 model.addRow(new Object[]{"Site", "Application", "Entity"});
 

Я не уверен, почему я получаю это исключение… Я создал новый Object[] массив и присвоил ему три элемента… но я не пытаюсь получить доступ к этим элементам (или любым элементам, которые не существуют)…

Может кто-нибудь указать, что я здесь делаю не так?

Комментарии:

1. Вы добавили эти столбцы явно, например model.addColumn("Column");

2. Нет — я не добавил никаких столбцов как таковых — просто строку с заголовками столбцов. Предположительно, тогда я должен избавиться от этой строки и добавить три столбца, как вы указали вместо этого?

3. Просто учитывая, что попытка — и она не делает того, на что я надеялся… Что это делает, так это добавляет еще три столбца рядом с тремя, которые у меня уже есть (что дает мне в общей сложности 6 столбцов). Что я хочу сделать, это добавить новую строку под строкой, которая у меня уже есть. Строка, которая у меня уже есть, предназначена только для того, чтобы содержать заголовки столбцов, и теперь я хочу добавить строку пустых ячеек внизу, которую пользователь заполнит самостоятельно.

4. Можете ли вы опубликовать код, в котором вы создаете таблицу / столбцы?

Ответ №1:

Я думаю, это сработает

 DefaultTableModel model = (DefaultTableModel) jEntityFilterTable.getModel();

Vector row = new Vector();
row.add("Site");
row.add("Application");
row.add("Entity");
model.addRow(row);
 

Комментарии:

1. Спасибо за ваш ответ. Я пытался попробовать, но получаю то же ArrayIndexOutOfBoundsException самое, что и раньше — на этот раз в строке : model.addRow(row);