2012-03-13 3 views
1

나는 JTable의에서 MySQL 데이터베이스의 내용을 표시 일부 자바 프로그램을 설계하기 위해 노력하고있어. 내가 뭘 더 잘 모르겠어요 : 벡터 전체 테이블을로드하고 다음 테이블의 각 셀에 대한 데이터를 넣어. 또는 각 셀을 별도의 쿼리로로드합니까? 이 두 번째 변종이 훨씬 더 후 데이터 onScrolling를로드하는 경우하나의 큰 쿼리 또는 JTable을위한 작은 커플?

public class DBTableMode extends AbstractTableModel { 
...   
Vector<Vector<Object>> data = dao.getWholeData(); //my getter of whole data table 
... 
public Object getValueAt(int rowIndex, int columnIndex) { 
     data.elementAt(rowIndex).elementAt(columnIndex); 
} 
... 

또는

public class DBTableMode extends AbstractTableModel { 
... 
public Object getValueAt(int rowIndex, int columnIndex) { 
     dao.getCell(rowIndex, columnIndex); 

} 
... 

는 사실은 내가, JTable의의 작동 원리를 알 수 없습니다. 내 경우에는 무엇이 더 나은가요?

+0

가 될 테이블 가능성이 얼마나 큰? – DNA

+0

실용적인 응용 프로그램이 없습니다. 이것은 실험적인 문제입니다. 그래서 테이블에 수백 개의 레코드가 있고 수천 개의 레코드가 포함되어있을 때 더 좋습니다. – Yurgen

+1

_JTable_의 작동 원리를 알지 못합니다. 그 자체로 나쁘지는 않지만 단순히 배우는 동기가됩니다. http://docs.oracle.com/javase/tutorial/uiswing/components/table.html :-) – kleopatra

답변

2

DefaultTableModel의 편의를 이길 어렵지만, AbstractTableModel는 내부 데이터 표현을 통해 더 많은 유연성을 제공합니다. 좀 더 최근에 그리고 Vector의 동기화 오버 헤드없이 사용할 것입니다. 이 exampleMap<String, String>를 사용합니다. 어떤 경우에는, 당신의 TableModel 내부의 선택을 캡슐화하여, 프로그램이 진화로 당신의 마음을 변경할 수있는 옵션을 보존 할 수 있습니다.

here으로 표시된 SwingWorker도 백그라운드에서 모델을 구축하는 것으로 간주됩니다.

JTable 자체가 바로보기입니다. 렌더링은 이미 fairly efficient입니다.

+1

+1 @ Yurgen 아마도 몇 가지 분리 된 결과 집합에 SQL ResultSet을 분할하는 것입니다 ---> (선택 .... LIMIT int, int)에서 페이지 생성을 구현하는 MySQL, – mKorbel

관련 문제