选择一个时,仅在JComboBox中显示一个值

时间:2016-05-09 11:48:24

标签: java swing user-interface jcombobox

您好:)我需要帮助更改JComboBox中的JTable。我是GUI编程和Swing的新手,无法解决这个问题:我必须改变JComboBox的行为。

您可以在下面的图片中看到ComboBox。如果" Ja"被选中应该只是" Nein"作为一种选择,反之亦然。如果" Nein"那也很酷。默认设置。代码是从上学期的一名学生写的,我很难像我一样调整组合框。

Table with the ComboBox

这是ComboBox初始化的代码片段。

optionsInteger = new JComboBox<String>();
    optionsInteger.addItem("Ja");
    optionsInteger.addItem("Nein");
    optionsInteger.setSelectedItem(optionsInteger.getItemAt(0));
    optionsInteger.setSelectedIndex(1);
    optionsInteger.setName("optionsInteger");

在此方法中,ComboBox将插入JTable

    public void repaintXTable(DefaultTableModel model,JTable table, int xAmount, JScrollPane scrollPane,
                                JComboBox<String> optionsInteger) {

    model.setRowCount(xAmount); 
    th = table.getTableHeader();
    tcm = th.getColumnModel();
    tcs = tcm.getColumns();

    tcs.nextElement().setHeaderValue("");
    tcs.nextElement().setHeaderValue("Lower");
    tcs.nextElement().setHeaderValue("Upper");
    tc = tcs.nextElement();
    tc.setHeaderValue("Integer");

    tc.setCellEditor(new DefaultCellEditor(optionsInteger));

    for(int i=0;i<xAmount;i++)
    {
        model.setValueAt("X"+(i+1), i, 0);
    }

}

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

在您的代码中,此行

optionsInteger.setSelectedItem(optionsInteger.getItemAt(0));

将默认选择设置为第0个元素(Ja)。这一行

optionsInteger.setSelectedIndex(1);

将默认选择设置为第一个元素(Nein)。

设置所选项目或所选索引。没有必要同时做到这两点。

默认情况下,JComboBox不会删除所选元素。如果删除了所选元素,那么所选元素在JTable中的显示方式如何?

如果你真的想这样做,你将不得不创建自己的JComboBox版本。

答案 1 :(得分:0)

  

。如果&#34; Ja&#34;被选中应该只是&#34; Nein&#34;作为一种选择,反之亦然。

那么你需要两个独立的ComboBoxModels,一个包含&#34; Nein&#34;另一个包含&#34; Ja&#34;。然后,当您开始编辑单元格时,检查当前值并使用包含其他值的模型。

结帐How to add unique JComboBoxes to a column in a JTable (Java)。此示例显示了如何在要编辑单元格时动态更改模型。

  

如果&#34; Nein&#34;那也很酷。默认设置。

这与编辑器无关。你只需添加&#34; Nein&#34;将数据添加到模型时到TableModel。