Можно кратко инициализировать 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");
работы.
Я думаю, вам нужно добавить столбцы в вашу модель таблицы. Ваш код добавляет столбцы пользовательского интерфейса в таблицу, но не добавляет их в модель
Дмитрий прав. Замените
this.addColumn(ColumnName);
this.addColumn(ColumnSize);
this.addColumn(ColumnRmIcon);
на
Model.addColumn(ColumnName);
Model.addColumn(ColumnSize);
Model.addColumn(ColumnRmIcon);
, и теперь модель знает о столбце n и больше не будет генерировать исключение, когда вы пытаетесь добавить строку в модель, которая считает, что у нее 0 столбцов
Из API JTable.setAutoCreateColumnsFromModel ():
«Этот метод вызывает createDefaultColumnsFromModel, если autoCreateColumnsFromModel изменяется с false на true».
Vector выдает исключение ArrayIndexOutOfBoundsException - если индекс выходит за пределы диапазона (index <0 || index> = size ())
Я предполагаю, что в модели таблицы отсутствуют столбцы, как предложил Дмитрий