2013-02-13 1 views
0

그래서 JComboBox를 셀로 여러 개 사용하는 시나리오가 있습니다. JComboBox의 요소를 선택하면 (자), Table Model의 구조가 변경 될 필요가 있습니다. 또한 JComboBox의 선택을 듣고 그에 따라 다시 유효성을 검사하는 '출력 테이블'이 있는데,이 때문에 쿼리 테이블의 모델을 동일하게 유지해야 리스너를 다시 사용할 수 있습니다. 테이블 모델의 구조를 변경하려면 어떻게해야합니까?TableModel 구조체를 변경하십시오

DefaultTableModel QueryTableModel = new DefaultTableModel(dropDownUserSelection, resultsListHeadings);  
queryTable.setModel(QueryTableModel); 

JComboBox box = new JComboBox(boxModel);  
queryTable.getColumnModel().getColumn(i).setCellEditor(new DefaultCellEditor(box)); 

이미 다른 곳에서 요청 된 질문을하고 있다면 사과,하지만 난 주위에 찌름을 했어 내가 찾던 찾을 수 없습니다.

감사

+0

약간 불분명합니다. 구조에 따라 열을 추가/제거한다고 가정합니다. – MadProgrammer

+0

안녕하세요, 답변 해 주셔서 감사합니다 ... 맞습니다. –

+1

[example] (http://stackoverflow.com/a/7356518/230513)에 대한 귀하의 콤보를 보여주는 [sscce] (http://sscce.org/)와 귀하의 전화를 포함하도록 질문을 편집하십시오. fireTableStructureChanged()'를 호출합니다. – trashgod

답변

2

TableModel는 모델 변경의 부모 테이블을 통지 (또는 사람이 듣기)에 대한 책임이 있습니다.

사용할 수있는 일반적인 이벤트는 데이터 변경, 셀 업데이트, 행 삽입/제거 및 구조 변경입니다.

"구조가 변경되었습니다"는 부모 테이블에 테이블 모델의 구조 (열 및/또는 열 이름 및/또는 형식의 수가 변경됨)를 알려주며 완전히 자체를 업데이트해야합니다.

여기에는 여러 가지 방법이 있습니다. 기존 테이블 모델을 적절하게 자체 변경하고 구조 변경 이벤트를 발생 시키거나 필요에 따라 새 테이블 모델을 구성하여 JTable에 적용 할 수 있습니다.

+1

+1'setModel()', [here] (http://stackoverflow.com/a/8260663/230513)도 필요한 이벤트를 발생시킵니다. – trashgod

+0

+1 네, 이제 40K 담당자를 초과했습니다. –

+0

@ Eng.Fouad 40 오늘, 40 오늘 ... 기분이 너무 오래됨;) – MadProgrammer

관련 문제