将Combobox列添加到JTable

时间:2013-05-05 10:15:59

标签: java swing jtable jcombobox

之前已经处理过这种类型的帖子,但我的问题基于我的代码的结构。

我只是想在我上一栏的所有行中添加一个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));

当我运行此代码时,它只在第3列显示为true,而不是JcomboBox? 任何人都可以发现问题吗? 非常感谢

1 个答案:

答案 0 :(得分:2)

您已指定自定义editor;现在你需要解决renderer。我看到两种可能性:

  1. JComboBox<String>与所需的truefalse值一起使用,如图here所示。

    image1

  2. 对于类型为JCheckBox的值,使用默认的渲染器和编辑器Boolean.class,如herehere所示。

  3. image2