0

HashMaps を使用して ArrayList に格納されたデータから JTable をロードしようとしています。コードは次のようになります

private ArrayList<HashMap> menuLijst;
private JPanel tablePanel;
//some init
tablePanel = new JPanel();

次に、これが機能することを確認するためのランダム データです。

this.menuList = new ArrayList();
// hashmap
HashMap hm1 = new HashMap();
HashMap hm2 = new HashMap();
hm1.put("question", "Contact");
hm1.put("query", "select contact from tim");
hm1.put("message", "contact");
hm2.put("question", "Sales");
hm2.put("query", "select sales from tim");
hm2.put("message", "sales");
menuList.add(hm1);
menuList.add(hm2);    

JTabel は事前に定義されたサイズ データに依存しないため、これは私の HashMap の外観です。

全体として、私の質問は、HashMaps を使用して ArrayLists からデータを JTable に配置する方法です。

いくつかのオプションを試しましたが、うまくいきませんでした。

前もって感謝します。

4

3 に答える 3

1

AbstractTableModelを拡張し、次のメソッドを実装するだけです。

  • getColumnCount
  • getRowCount
  • getValueAt
  • getColumnName

列の表示順序(たとえば、クエリ、メッセージ)を選択し、次を使用します。

HashMap map = menuLijst.get(row);
if (col==0)
     return map.get("query");
else if (col==1)
     return map.get("message");

実装する getValueAt(int row, int col)

于 2012-05-14T08:36:23.173 に答える
1

独自のTableModel実装を作成する (または利用可能なクラスの 1 つから拡張する) か、別のデータ構造を使用する必要があります ( で利用可能なコンストラクターを参照してくださいDefaultTableModel)。

ただしTableModel、列の順序を順序付けなしで決定するメカニズムを見つけるとすぐに、このデータ構造を使用して作成するのはかなり簡単ですHashMap

Swing テーブルのチュートリアルTableModelには、インスタンスの作成に関するセクションが含まれています

于 2012-05-14T08:32:07.433 に答える
0

jtable は javabeans の概念を使用しており、ハッシュマップのキーと値のペアは javabeans プロパティとして実装されていません。ペア クラスを使用するか、キー/値プロパティを使用して独自のペア クラスを定義します。

于 2012-05-14T08:31:00.367 に答える