1

私はこのような階層構造を持っています:

Lot
 |_Stages
    |_Samples

例:

Lot1
 |_Stage1
     |_Sample11 
     |_Sample12 
 |_Stage2
     |_Sample21 
     |_Sample22 

ユーザーがLotIDを提供し、これに基づいて私のSQLクエリがすべてのステージと各ステージ内のすべてのサンプルを取得するという考え方です。

結果セットの各レコードをカスタムオブジェクトとして保存し、配列リストに追加します。

結果セット出力の例:

LotID || LotCondition || StageID || StageCondition || SampleID || SampleCondition

-------- || -------------- || ------------ || -------------------- || ------------ || --------------------------------

5001 || 処分|| 4001 || 完了|| 3001 || 承認済み

5001 || 処分|| 4001 || 完了|| 3002 || 承認済み

5001 || 処分|| 4002 || 完了|| 3003 || 承認済み

5001 || 処分|| 4002 || 完了|| 3004 || 承認済み

5002 || ReadyToRelease || 4003 || 完了|| 3005 || 承認済み

5003 || 処分|| 4004 || 完了|| 3006 || 承認済み

5004 || 処分|| 4004 || 完了|| 3007 || 承認済み

この配列リストから、DefaultMutableTreeNodeを使用してオブジェクトをツリーに追加します(つまり、新しいDefaultMutableTreeNode(custom_object.getLotID).. etc)。

現在、2つの問題があります。

  1. 一意のLotID=5001は1つだけですが、サンプルが4つあり、レコードが4つあるため、(上記の例から)4回表示されます。

  2. 私の目的は、最初にSampleIDを取得してそれぞれのStageIDに追加し、最後にすべてのStageIDをLotID(ルートノード)に追加することです。階層的に表示する方法がわかりません。

誰かが私を正しい方向に向けたり、いくつかのアイデアを教えてもらえますか?

4

1 に答える 1

0

わかりました..これを行う方法を見つけたので、共有できると思いました。MutableTreeModel は使用しませんでした。

つまり、結果セットが取得されるときにループを作成することにしました。例: ステージの結果セットをフェッチし、各ステージ内のすべてのサンプルをフェッチしようとします。

ここで 2 つのオプションがありました。1 つは、これらの結果セットを DefaultMutableTreeNode に格納するか、ArrayList と HaspMap に格納することでした (たとえば、ステージ ID の HashMap をキーとして作成し、そのサンプルを ArrayList の値として作成できました)。 . Then we can pass in any type of object other than DefaultMutableTreeNode object to a TreeModel, we can pass in this HashMap object and use a custom TreeModel to handle it. これには、Arraylists に保存されたオブジェクトが HashCode をオーバーライドし、等しい方法。

しかし、私のアプリケーションでは、オプション 1 を使用するのは簡単だと思います。

于 2013-03-01T19:58:23.700 に答える