2012-04-03 2 views
3

커스텀 AbstractTableModel을 만들었습니다. 생성자는 파일의 데이터로 모델을 초기화합니다. 그러나 모델에 여분의 열을 추가하려고합니다 (열의 SQL 한계로 인해).Java : fireTableStructureChanged를 변경하여 AbstractTableModel을 만드는 방법은 무엇입니까?

나는 addColumn (String columnName, Vector columnData) 메서드에 대한 호출을 초기화 코드에 추가하여이 작업을 수행하려고한다.

내 사용자 정의 AbstractTableModel의이 addColumn 메소드는 "fireTableStructureChanged()"를 포함하여 DefaultTableModel의 addColumn 메소드에서 직접 파생됩니다.

그러나이 코드를 실행하면 fireTableStructureChanged()가 새 열을 추가하지 않는 것으로 나타나며 JTable은 파일의 데이터 만 표시합니다. 왜 이것이 될 수 있을까요? - 아무것도 AbstractTableModel은 fireTableStructureChanged에 시간이 시점에서 청취하지 않습니다()가 리스너 문제

public class Dummy extends AbstractTableModel { 
    public Dummy() { 
     //load data from SQL file into ResultSets 
     //transfer ResultSet.metadata into columnHeaders Vector<String> 
     //transfer ResultSet.data into columnDatums Vector<String> 
     fireTableChanged(null); 
     addColumn("Added Heading", (Vector)null); 
    } 

    public addColumn(String columnHeader, Vector columnData) { 
     columnHeaders.add(columnHeader); 
     // transfer columnData into columnDatums 
     fireTableStructureChanged(); 
    } 
} 

가 : 여기

내가 사용하고있는 코드의 짧은 표시이다?

+0

Java 명명 규칙을 배우고 그들에게 붙이십시오. – kleopatra

+0

@kleopatra - 감사합니다.하지만 저는 그것들을 알고 있습니다. dummy는 stackoverflow를 목적으로하는 클래스의 이름입니다. – Arvanem

+0

그것은 잠재적 조력자의 눈을 아프게하고 있습니다 :-) 당신이 원하는 것은 될 수 없습니다 ... – kleopatra

답변

4

당신은 AbstractTableModelTableModel 인터페이스에 의해 지정된 세 필요한 (즉 구현되지 않은) 메소드의 구현을 공개해야합니다. 특히 getColumnCount()getRowCount()은 업데이트 된 값을 반환해야합니다. fireXxx() 메서드는 getValueAt()을 통해 모델에 쿼리하도록 뷰에 지시합니다. 검색 할 데이터가 getValueAt()을 기다리는 동안 거기에 있어야합니다. EnvTableTest은 간단한 예입니다. 또한 Vector에 대한 최신 대안을 고려해보십시오. 여기에는 필요하지 않은 동기화 코드가 포함될 수 있습니다.

+0

+1 당신의 사려 깊고 깊이있는 응답. 나는 방법을 검토하고 당신이 제안하는 방법으로 문제를 해결하려고 노력할 것입니다. 그것이 효과가 있다면 나는 당신의 대답을 받아 들일 것입니다. 내가 고생하면 질문에 코드를 추가 할 것입니다. 많은 분들께 감사드립니다 – Arvanem

+0

당신은 확실히 옳았습니다. getColumnCount() 및 getRowCount()가 업데이트 된 값을 반환했는지 확인해야했습니다. 훌륭한 답변과 통찰력에 감사드립니다. – Arvanem

+0

당신을 환영합니다; 다행입니다. 참고로 [* 추상 클래스가 인터페이스를 구현하는 경우 *] (http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html)도 참조하십시오. – trashgod

관련 문제