Jtables (инициализаторы констант массива) java

Хорошо, в основном то, что я делаю, это то, что у меня есть jtable, в котором пользователи могут вводить свою информацию в таблицу, а затем я хочу сохранить ее в текстовый файл. Однако проблема, с которой я сталкиваюсь, связана с этим.

private static String dataValues[][];  

Я хочу иметь возможность объявлять такие значения данных, чтобы я мог получить к ним доступ в каждом методе, чтобы я мог добавлять строки в свою jtable следующим образом:

dataValues = {{number, owner, txtDate"}};
tableModel.addRow(dataValues);

однако я получаю сообщение об ошибке в dataValues, говорящее, что «константы массива могут использоваться только в инициализаторах». И я не очень понимаю, что это значит.

если я объявлю такую ​​​​переменную в реальном методе, она сработает.

String[][] dataValues = {{number, owner, txtDate}};

Но мне нужно иметь доступ к нему в любом месте программы, поэтому такое объявление мне не поможет.

Спасибо за помощь заранее.


person John Wozniak    schedule 12.03.2012    source источник


Ответы (4)


JTable представляет данные внутри с помощью TableModel. Что JTable делает в конструкторе, так это преобразует исходный массив в TableModel. Что вам нужно сделать, так это подумать с точки зрения TableModels, как описано в следующей ссылке: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data

person Stephane Grenier    schedule 13.03.2012

Вы всегда можете инициализировать переменные массива следующим образом:

static String[] row;

и позже:

row = new String[]{"foo", "bar", "baz"};
person Hovercraft Full Of Eels    schedule 13.03.2012

«Константы массива можно использовать только в инициализаторах». - это синтаксическая ошибка Java. Вы не можете использовать такие операторы, как:

 int[] a = new int [3];
 a = {1,2,3};

Я думаю, что с «a = {...}» компилятору «javac» не ясно, что такое тип «a». Особенно при работе с массивом объектов, таких как строки.

Таким образом, разрешено использование констант

 int[] a = {1,2,3};

Или, возможно,

a = new int [] {1,2,3};

Выше следует единственный способ, если вы действительно хотите делать то, что пытаетесь сделать. По сути, вот как будет выглядеть ваш код:

dataValues = new String[][] {{"number", "owner", "txtDate"}};

Это для части синтаксической ошибки Java. Для материалов JTable, пожалуйста, следуйте ответу @Stphane G

person ring bearer    schedule 13.03.2012

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

Есть ли общая TableModel, которую мы можем использовать в JTables?

person sethu    schedule 13.03.2012