добавление к определенной ячейке в JTable вызывает java.lang.ArrayIndexOutOfBoundsException: 4> = 0 - PullRequest
0 голосов
/ 08 января 2019

java.lang.ArrayIndexOutOfBoundsException: 4> = 0 исключение

Я создал метод для добавления объекта в определенную ячейку в JTable это бросило java.lang.ArrayIndexOutOfBoundsException: 4> = 0 исключение

это части моего кода

    //creating a JTable and a table model
    horaireTable = new JTable();
    modelHT = new DefaultTableModel();
    modelHT.setColumnIdentifiers(rowHead);
    horaireTable.setModel(modelHT);
    horaireTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    horaireTable.getColumnModel().getColumn(0).setMinWidth(106);
    horaireTable.getColumnModel().getColumn(1).setMinWidth(107);
    horaireTable.getColumnModel().getColumn(2).setMinWidth(106);
    horaireTable.getColumnModel().getColumn(3).setMinWidth(107);
    horaireTable.getColumnModel().getColumn(4).setMinWidth(106);
    horaireTable.getColumnModel().getColumn(5).setMinWidth(107);
    horaireTable.getColumnModel().getColumn(6).setMinWidth(106);

    JScrollPane paneHT = new JScrollPane(horaireTable);

    paneHT.setPreferredSize(new Dimension(750, 130));

    //getting data to add
    int j,s;

    j = listJours.getSelectedIndex();  //listJours and listSeance are two 
    s = listSeance.getSelectedIndex(); // Jlists containing strings
    String h ="exemple";

    //adding to the table
    modelHT.setValueAt(h,s,j);

результат, который я получаю, является java.lang.ArrayIndexOutOfBoundsException: 4> = 0 исключение

1 Ответ

0 голосов
/ 08 января 2019

результат, который я получаю, является java.lang.ArrayIndexOutOfBoundsException: 4> = 0 исключение

Вы пытаетесь обновить ячейку в TableModel, которая не существует.

modelHT = new DefaultTableModel();

Вы создали пустую TableModel с 0 строкой и 0 столбцами.

modelHT.setColumnIdentifiers(rowHead);

Затем вы добавляете 7 заголовков столбцов в таблицу, но у вас все еще есть 0 строк данных.

modelHT.setValueAt(h,s,j);

Вы не можете просто установить значение ячейки, если она не существует в модели.

Если вы хотите изменить данные в ячейке, то данные должны существовать в TableModel.

Один из способов сделать это - создать TableModel с определенным количеством строк и столбцов:

//modelHT = new DefaultTableModel();
modelHT = new DefaultTableModel(rowHead, 5); 

Это создаст модель с количеством столбцов, указанным вашей переменной rowHead, и 5 строками данных с нулевыми значениями в каждой ячейке.

Другой способ - сначала создать TableModel только с определенными столбцами, а затем динамически добавлять строки данных по мере необходимости:

modelHT = new DefaultTableModel(rowHead, 0); 
...
modelHT.addRow(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...