2017-05-08 1 views
-1

나는 JTable을 생성하고 열 머리글과 데이터를 테이블에 삽입했습니다.JTable은 한 행을 반복합니다

Vector<Diagnosis_data> Arraylist_object = new Vector<Diagnosis_data>(); 
Vector<Vector<Object>> data = new Vector<Vector<Object>>(); 

Diagnosis_data d1 = new Diagnosis_data("92992","1",1422-09-09,1422-09-18,E11.9,"Type 2 diabetes mellitus without complications"); 
Diagnosis_data d2 = new Diagnosis_data("8199111","2",1415-09-09,1415-09-18,E11.622,"Type 2 diabetes mellitus with other skin ulcer"); 

Arraylist_object.add(d1); 
Arraylist_object.add(d2); 

int f = 0; 
while(f < Arraylist_object.size()) 
{ 
    Vector<Object> vector = new Vector<Object>(); 

    for(; f < Arraylist_object.size() ; f++) 
    { 
     vector.add(Arraylist_object.get(f).patient_ID); 
     vector.add(Arraylist_object.get(f).Ad_ID); 
     vector.add(Arraylist_object.get(f).Ad_start); 
     vector.add(Arraylist_object.get(f).Ad_End); 
     vector.add(Arraylist_object.get(f).Diagnosis_code); 
     vector.add(Arraylist_object.get(f).Diagnosis_Des); 

     data.add(vector); 
    } 
} 


DefaultTableModel tableModel = new DefaultTableModel(data,column_header); 

JTable table_2 = new JTable(tableModel); 
JScrollPane scrollPane = new JScrollPane(table_2); 

scrollPane.setBounds(1, 1, 1050, 500); 
panel_1.add(scrollPane); 

결과가 :

enter image description here

  • data
  • column_header 이것은 코드이다

문자열의 벡터이고, 벡터의 벡터이고

+0

1) 더 빨리 도움을 받으려면 [MCVE] 또는 [짧은, 자체 포함, 올바른 예] (http://www.sscce.org/)를 게시하십시오. 분명히 (나는 희망한다.) GUI 상단의 관련이없는 모든 걸쇠를 제거한다. 2) 문제를 설명했지만 아무런 질문도하지 않았습니다. 귀하의 질문은 무엇인가? 3)'scrollPane.setBounds (1, 1, 1050, 500);'Java GUI는 다른 로케일에서 다른 PLAF를 사용하여 다른 OS, 화면 크기, 화면 해상도 등에서 작동해야합니다.따라서, 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자, .. [공백] (http://stackoverflow.com)에 대한 레이아웃 패딩과 테두리와 함께 [ –

+0

..] 또는 [그 조합] (http://stackoverflow.com/a/5630271/418556)을 사용하십시오./a/17874718/418556). –

+0

* "내 대답은 추가 된 코드를 반영하도록 편집되었습니다"* MCVE/SSCCE를 게시하도록 제안했습니다. 너 이해하지 못했 니? –

답변

2

올바른 데이터를 입력하면 게시 한 코드가 작동합니다. 문제는 데이터 여야합니다. 디버거를 사용하여 검사하거나 테스트 용으로 data의 내용을 인쇄하십시오.

은 아마 같은 벡터 data 여러 번에 추가되는 각 벡터의 내용은 동일

참고 : 데이터 나 코드를 테스트하는 데 사용 - (어쩌면 환자 개체가 static 필드를 사용합니까?)

Vector<Vector<?>> data = new Vector<>(); 
Vector<String> column_header = new Vector<>(); 

column_header.addAll(Arrays.asList("A", "B", "C")); 

Vector<String> row; 
row = new Vector<>(); 
row.addAll(Arrays.asList("11", "12", "13")); 
data.add(row); 
row = new Vector<>(); 
row.addAll(Arrays.asList("21", "22", "23")); 
data.add(row); 
row = new Vector<>(); 
row.addAll(Arrays.asList("31", "32", "33")); 
data.add(row); 

편집 : 새로운 벡터는 각 행에 대해 작성해야 생성 data 코드가 추가 된 후 내가 위에서 의심으로,이 문제는 분명하다 : "샘 e 벡터 추가 중 "입니다. 이 부분에서

룩은 :

Vector<Object> vector = new Vector<Object>(); 

for(; f < Arraylist_object.size() ; f++) 
{ 
    vector.add(...); 

    data.add(vector); 
} 

vector는 루프 이외의 지역 만 한번 만들어 지지만 루프 내에서 다수의 시간이 추가된다.

해결 방법 : 루프

를 내부의 벡터를 생성하고 추가 while 필요, 실제로 대회가 for 루프에서 변수를 선언하는 것입니다이 없다 (카운터로 i 사용) :

for(int i = 0; i < Arraylist_object.size() ; i++) 
{ 
    Vector<Object> vector = new Vector<Object>(); 

    vector.add(Arraylist_object.get(i).patient_ID); 
    ... 

    data.add(vector); 
} 

또는 사용 foreach :

for (Diagnosis_data diagnosis : Arraylist_object) 
{ 
    Vector<Object> vector = ... 
    vector.add(diagnosis.patient_ID); 
    vector.add(diagnosis.Ad_ID); 
    ... 
} 

  

조언 : 디버거를 사용하는 법을 배우는 데 약간의 시간을 투자하십시오. 심각한 프로그래밍을 원할 경우 낭비되지 않습니다.

Advice2 : 앤드류 톰슨 주석으로, 대신 구성 요소를 배치하기 위해서 일정한 좌표를 사용하는 LayoutManager 년대를 사용합니다. 튜토리얼 : Laying Out Components Within a Container

+0

친애하는 카를로스 - 당신의 재생을위한 thenk 당신은 너무 많이 .. 나는 그것을 인쇄하여 데이터를 테스트하여 같은 종류의 좋은 벡터가 포함되어 있습니다 ... 이것은 벡터 작성 코드 – monaalhumud

+0

int f = 0; \t \t 동안 (F 벡터 = 새로운 벡터(); 위한 \t \t \t (; F monaalhumud

+0

** 1) ** 위의 원래 게시물 (적어도 읽을 수) **에 포함되어야한다 2) ** 아직 완료되지 않은 것 - 무엇 Arraylist_object입니다 그리고 더 중요한 것은 그 내용도 - 게시물의 일부가되어야합니다 ** 3) ** 내부 루프에'Arraylist_object.get (f) .patient_ID'를 출력하여 그것을 검증합니다 (디버거를 사용하는 것이 훨씬 더 효율적입니다) –

관련 문제