2013-05-05 5 views
1

이 유형의 게시물은 이전에 처리되었지만 내 코드 구조에 따라 문제가 있습니다.JTable에 JCombo 열 추가

그냥 마지막 열의 모든 행에 JComboBox를 추가하려고합니다. 코드는 다음과 같습니다.

//Return Person objects from a method 
ArrayList<Person> people = getPersonList(); 

String[] columnNames {"Name", "Age", "English Speaker?" }; 

DefaultTableModel model = new DefaultTableModel(); 
model.setColumnIdentifiers(columnNames); 

JTable table = new JTable(model); 

//Create JComboBox for last column (English Speaker?)      
JComboBox<Integer> englishCombo = new JComboBox<>(); 

int count = 1; 

//For loop to add each Person to there rows 
//Also add a boolean value to determine check box 
for(Person p: people) 
{ 
    boolean english =false; 

    if(p.isEnglishSpeaker() == true) 
    { 
     english = true; 
    } 
    else 
    { 
     english = false; 
    } 
    questionCombo.addItem(count); 

    model.addRow(new Object[]{p.getName(), p.getAge(), english); 
} 

//Get 3rd column (English Speaker) 
TableColumn englishColumn = table.getColumnModel().getColumn(2); 
//Add JComboBox to English Speaker 
englishColumn.setCellEditor(new DefaultCellEditor(englishCombo)); 

이 코드를 실행하면 JcomboBox가 아닌 3 번째 열에 만 false가 표시됩니다. 누구든지 문제를 파악할 수 있습니까? 감사합니다.

+0

'거짓 부울 = 영어; if (p.isEnglishSpeaker() == true) { english = true; } else { english = false; }'도 쓸 수 있습니다 :'boolean english = p.isEnglishSpeaker();'. 더 간단하거나, 전에 쓰여진 모든 것을 버리고 간단하게 다음을 호출하십시오 :'model.addRow (new object [] {p.getName(), p.getAge(), p.isEnglishSpeaker()); ' –

+0

http://stackoverflow.com/questions/11226926/java-jtable-with-jcombobox/11227034#11227034). –

+0

답장을 보내 주셔서 감사합니다. 나는 그 쉬운 방법으로 바꿨다. (나는 그것을 놓쳤다.) 하지만 여전히 실제 JComboBox가 아니라 false의 true를 반환합니다. 감사합니다. –

답변

2

editor을 지정했습니다. 이제 renderer을 해결해야합니다. here을 같이

  1. 를 사용하여 원하는 truefalseJComboBox<String> : 나는 두 가지 가능성을 참조하십시오. herehere을 같이

    image1

  2. 사용 유형 Boolean.class입니다 값에 대한 디폴트의 렌더링 및 편집, JCheckBox,

    .

image2

+0

답장을 보내 주셔서 감사합니다. 그건 내 실수 였어. JComboBox가 아니라 JCheckBox가 필요하다는 의미였습니다. 하지만 JCheckBox를 추가 할 때와 완전히 똑같은 접근법 이죠. 맞습니까? –

+0

'JCheckBox'는'Boolean.class' 타입의'TableModel' 값의 기본값이기 때문에 훨씬 쉽습니다. 위의 두 번째 예제는'getColumnClass()'를 재정의하는 방법을 보여줍니다. – trashgod