2011-05-13 2 views
3

저는 List와 List를 가지고 있고 두 개의 열로 JTable을 만들어야합니다. 나는 모델과 혼동 스럽다. anybofy는 나에게 그걸하는 법을 보여줄 수있다. 나는 스윙과 자바에 익숙하지 않은가?JTableComponent와 JComboBox를 JTable에 넣으십시오.

+1

은 어떻게 무엇을 구체적으로 어떻게 보여? 아직 작성하지 않았다면 JTables 및 테이블 모델을 만드는 방법에 대한 스윙 튜토리얼을 읽으셨습니까? 가지고 계시지 만, 서면으로 지나치게 넓기 때문에 질문을 명확히하십시오. –

답변

2

제발 check out my answer to some other question. 간단한 표 모델을 제시 한 곳에서 자주 사용합니다. 귀하의 경우 당신은 다음과 같은 방법으로 데이터를 생성 할에서

는 :

//I assumed here list 1 and 2 have the same sizes 
List<Object> list1 = getList1(); 
List<Object> list2 = getList2(); 
int rNo = list1.size(); 
List<List<Object>> data = new ArrayList<List<Object>>(rNo); 
int cNo = 2; 
for(int i = 0; i < rNo; i++) 
{ 
    List<Object> r = new ArrayList<Object>(cNo); 
    r.add(list1.get(i)); 
    r.add(list2.get(i)); 
    data.add(r); 
} 
tm.setData(data); 
+0

이 AbstractTableModel은 "유용한"메소드와 모델 #food .....을 놓쳤습니다. TableStructureChanged(), TableDataChanged() 및 TableCellUpdated (int row, int col); – mKorbel

+0

@mKorbel 이해. 글쎄 슈퍼 클래스의 기본 클래스가 있습니다. 다른 유용한 방법 '@Override 관해서 \t Public 클래스 는 getColumnClass (INT 온도) \t \t \t { 복귀 해 getValueAt (0, c) .getClass(); \t}'이 덕분에 텍스트 대신 부울을 사용하는 셀에서 확인란을 사용할 수 있습니다. – Boro

+0

+1, OP에 대한 정답 일 수 있습니다. – mKorbel

1

걱정할 필요없이 원하는 구성 요소를 해당 열의 셀 편집기로 설정하면됩니다. 단순하지 않습니다.

예 니펫

public class JTextFieldCellEditor extends DefaultCellEditor {  
    JTextField textField;  
    public JTextFieldCellEditor() { 
     super(new JTextField()); 
     textField = (JTextField) getComponent(); 
    } 
} 

그런 다음, 아래처럼 포함

TableColumn column = myTable.getColumnModel().getColumn(0); 
column.setCellEditor(new JTextFieldCellEditor()); 

추가 읽기 : 여기

당신의 최선의 방법이며, Swing tutorial for JTable.

관련 문제