我正在寫一個小程序,它創建一個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全部鰻魚
哦,我應該提到。我正在實現這個類,就是說,我從別處調用它。
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:一個非常糟糕的主意。堅持體面的OOPs結構,不要彎曲這個結構來解決你的代碼的根本問題。相反,解決自己的根本問題。請參閱編輯以回答(很快)。 –
請看我在編輯中的問題。 –