2012-03-13 19 views
1

私はJTableでMySQLデータベースの内容を表示するいくつかのJavaプログラムを設計しようとしています。私は何が良いのかわからない:ベクトル全体をテーブルにロードし、そこからテーブルの各セルのデータを配置する。または、各セルを別々のクエリとしてロードしますか?1つの大きなクエリまたは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); 
} 
... 

OR

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

} 
... 

実際に私はそれがデータonScrollingをロードするならば、第二の変形がはるかに優れている、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をいくつかの分離されたResultSetに分割することです---> MySQLが(Select ... LIMIT int、int)、 – mKorbel

関連する問題