我正在写一个小程序,它创建一个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结构,不要弯曲这个结构来解决你的代码的根本问题。相反,解决自己的根本问题。请参阅编辑以回答(很快)。 –
请看我在编辑中的问题。 –