#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);
…