저는 csv 파일의 내용을 표시하는 GUI를 만드는 작은 프로그램을 작성하고 있습니다. 나는 오라클 웹 사이트 (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data)에서 개요를 따라했는데 내 문제는 '헤더'변수에 액세스 할 수없는 테이블을 작성하는 데 사용되는 'getColumnCount'메서드입니다. 아니면 가능할 수도 있지만, 내가 메인 메소드에서 변경했다고 생각한 변경 사항은 연결되지 않았습니다. 누군가가 잘못된 점과 해결 방법을 밝힐 수 있다면 많은 도움이 될 것입니다. 뱀장어변수에 액세스 할 수없는 이유가 확실하지 않습니다.
오의
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() 메서드를 사용하지 않습니까? 나는 생성자가 더 좋을 것이라고 생각했지만, main 메소드는 처음에는 테스트에 도움이되었고, 생성하려고 시도한 생성자에 많은 오류가 발생했습니다. –
@ AndréFoote : ** 매우 나쁜 아이디어. 괜찮은 OOP 구조를 고수하고 코드에 근본적인 문제를 해결하기 위해이 구조를 구부리지 마십시오. 대신 기본적인 문제 자체를 수정하십시오. 답변을 드릴 편집을 참조하십시오 (곧). –
내 편집 내역을 참조하십시오. –