java.lang. ArrayIndexOutOfBoundsException: 0> = 0 попыток заполнить JTable

Можно кратко инициализировать vector<string> от статически созданного char* массив:

char* strarray[] = {"hey", "sup", "dogg"};
vector<string> strvector(strarray, strarray + 3);

Это копирует все строки, между прочим, таким образом, Вы используете дважды память. Можно использовать предложение Will Dean для замены магического числа 3 здесь с arraysize (str_array) - хотя я не забываю там быть некоторым особым случаем, в котором та конкретная версия arraysize могла бы сделать Что-то Плохо (извините, я не могу сразу помнить детали). Но это очень часто работает правильно.

кроме того, если Вы действительно фанатичны об одной штуке строки, можно определить variadic макрос так, чтобы одна строка такой как DEFINE_STR_VEC(strvector, "hi", "there", "everyone"); работы.

9
задан Chris K 13 November 2009 в 23:17
поделиться

3 ответа

Я думаю, вам нужно добавить столбцы в вашу модель таблицы. Ваш код добавляет столбцы пользовательского интерфейса в таблицу, но не добавляет их в модель

16
ответ дан 4 December 2019 в 06:11
поделиться

Дмитрий прав. Замените

this.addColumn(ColumnName);
this.addColumn(ColumnSize);
this.addColumn(ColumnRmIcon);

на

Model.addColumn(ColumnName);
Model.addColumn(ColumnSize);
Model.addColumn(ColumnRmIcon);

, и теперь модель знает о столбце n и больше не будет генерировать исключение, когда вы пытаетесь добавить строку в модель, которая считает, что у нее 0 столбцов

4
ответ дан 4 December 2019 в 06:11
поделиться

Из API JTable.setAutoCreateColumnsFromModel ():

«Этот метод вызывает createDefaultColumnsFromModel, если autoCreateColumnsFromModel изменяется с false на true».

Vector выдает исключение ArrayIndexOutOfBoundsException - если индекс выходит за пределы диапазона (index <0 || index> = size ())

Я предполагаю, что в модели таблицы отсутствуют столбцы, как предложил Дмитрий

1
ответ дан 4 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: