Я пишу небольшую программу, которая создает gui для отображения содержимого файла csv. Я пробовал следовать схеме с сайта Oracle (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data), но моя проблема в том, что метод getColumnCount, который используется для сборки таблицы, не может получить доступ к переменной «headers». Или, скорее, это возможно, но изменения, которые, как я думал, я сделал с ним в основном методе, не подключались к нему. Если кто-то может пролить свет на то, что не так, и как его исправить, это было бы очень признательно.Я не уверен, почему переменная недоступна
public class MyTableModel implements TableModel {
private String[] headers; //This line.
private Object[][] tableData;
public static void main(String[] args) {
String fileName = "products.csv";
String[] csvList = readCSV(fileName);
String[] headers = Arrays.copyOfRange(csvList, 0, 10); //Or maybe this line isn't changing the one above.
}
private static String[] readCSV(String file) {
//Some code to fill the list.
return fileString;
}
@Override
public int getColumnCount() {
return headers.length; //<<This line of code
}
}
@Hovercraft Full Of Угри
О, я хотел бы упомянуть. Я реализую этот класс, как это, то есть я называю его из другого места.
private static void createGUI() {
csvTabler table = new csvTabler();
table.setTitle("CSV Table");
table.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table.createJTable();
table.pack();
table.setVisible(true);
}
private void createJTable() {
jTable = new JTable(new MyTableModel());
}
Я уверен, что это влияет на ваше решение, но я не уверен, как настроить ..
Во-первых, спасибо за ваш ответ! Что делать, если я сделал поле экземпляра статическим? Но предполагая, что такой простой вариант не существует. Я могу покончить с моим методом main()? Я подозревал, что конструктор будет лучше, но основной метод был полезен для тестирования сначала, и я получал много ошибок с конструктором, который я пытался построить. –
@ AndréFoote: ** очень ** плохая идея. Придерживайтесь достойной структуры OOP и не сгибайте эту структуру, чтобы исправить фундаментальную проблему с вашим кодом. Вместо этого исправьте основную проблему. См. Правки для ответа (скоро). –
см. Мое редактирование в вопросе. –