2013-02-26 3 views
1

SQL 쿼리에서의 JTree의 노드를 만듭니다동적 나는이 같은 계층 구조를 가지고

Lot 
|_Stages 
    |_Samples 

예 :

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

아이디어는 사용자가 LotID를 제공하고이를 바탕 것입니다 내 SQL 쿼리는 모든 스테이지와 각 스테이지 내의 모든 샘플을 검색합니다.

각 레코드를 결과 집합에 사용자 지정 개체로 저장하고이를 배열 목록에 추가합니다. 결과

출력 설정 예 :

LotID || LotCondition || 무대 ID || 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를 사용하여 개체를 Tree에 추가합니다 (예 : new DefaultMutableTreeNode (custom_object.getLotID) .. 등).

지금이 문제가 있습니다 : 하나의 독특한 LotID = 5001이

  1. 하지만 4 개 샘플 따라서 4 레코드가 있기 때문에 (위의 예에서) 4 시간을 표시합니다.

  2. 내 목표는 먼저 SampleID를 검색하여 해당 StageID에 추가하고 마지막으로 모든 StageID를 LotID (루트 노드)에 추가하는 것입니다. 계층 적 방식으로 표시하는 방법을 모르겠습니다.

누구나 올바른 방향 또는 몇 가지 아이디어를 가르쳐 주시겠습니까?

+3

사용 공장의 일종, 즉 재를 생성 할 수 있습니다, 행 데이터 주어진 옵션으로 이동합니다 간단하다 quired 노드. 아마 사용하고있는 트리 모델에 대한 참조를 전달하고 싶을 것이다. 'MutableTreeModel'과'MutableTreeNode'를 사용하는 것을 추천합니다. 자세한 아이디어는 [나무 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html)을 참조하십시오. – MadProgrammer

+0

Thanks MadProgrammer – user547453

답변

0

좋아요. 이렇게하는 방법을 찾았고 공유 할 수 있다고 생각했습니다. 나는 MutableTreeModel을 사용하지 않았다.

결과 세트가 검색 될 때 루프를 생성하기로 결정했습니다. 예를 들어, 스테이지에 대한 결과 세트를 가져오고 그 안에는 각 스테이지에있는 모든 샘플을 가져 오려고합니다.

이제는 두 가지 옵션이 있습니다. 하나는 DefaultMutableTreeNode에 결과 집합을 저장하거나 ArrayList 및 HaspMap에 저장하는 것입니다 (예 : 스테이지 키의 HashMap을 키와 샘플로 만들 수 있음). ArrayList를 값으로 사용하면 DefaultMutableTreeNode 객체가 아닌 다른 유형의 객체를 TreeModel에 전달할 수 있으므로이 HashMap 객체를 전달하고 사용자 정의 TreeModel을 사용하여 처리 할 수 ​​있습니다.이 경우에도 Arraylists에 객체가 저장되어 있어야합니다. 해시 코드를 무시하고 방법을 같음.

하지만 내 응용 프로그램에 대한 생각, 1