私はcsvファイルの内容を表示するGUIを作成する小さなプログラムを書いています。私は、Oracle Webサイト(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:**非常に悪い考え。まともなOOP構造に固執し、コードに根本的な問題を解決するためにこの構造を曲げないでください。代わりに基本的な問題自体を修正してください。答える編集をご覧ください(すぐに)。 –
質問の私の編集を参照してください。 –