jtable内的动态jcombobox渲染

时间:2013-03-09 11:23:28

标签: java swing jtable dynamic-data jcombobox

我在JTable的2列中有一个带有JCheckboxes的JTable。让我们说列A和列B是其中包含JComboBox的列。 A列JCheckbox的项目是静态的,可以进行硬编码。但是,B列的JComboBox值的项目是动态的。我想要做的是,当用户启动应用程序时,列A的JcomboBox应该具有静态值,它应该在ComboBox中显示默认选择的值“---选择---”

即。我将combox项目设置为[“ - 选择”,“X”,“Y”,“Z”]

此外,在列B中,JComboBox应将默认值显示为“Please Wait”,这意味着,经过一段时间后,它将动态更新。在此之前,它必须显示“请等待”。

经过一些用户操作后,我想用动态值更新Column B的JComboBox。即便如此,列B的JcomboBox值也依赖于列A的JcomboBox选择的项目。

我可以动态更新值,但是作为JComboBox的Cell的渲染没有按预期工作。

我尝试了以下内容,

Enumeration<TableColumn> c = myTable.getColumnModel().getColumns();
        int i = 0;
        while (c.hasMoreElements()) {
            TableColumn column = c.nextElement();
            column.setCellRenderer(new ComboBoxCellRenderer(i));
            i++;
        }



   private static class ComboBoxCellRenderer extends JComboBox implements TableCellRenderer {

        public ComboBoxCellRenderer(int column) {
            // for (int i = 0; i < elements.length; i++) {
            if (column == 0) {

                addItem("--Select--");
                addItem("X");
                addItem("Y");
                addItem("Z");

            }
        }

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            setSelectedItem(value);
            return this;
        }
    }

如果我使用此代码,则无法从JComboBo中选择项目。即使我选择,它也没有被选中。

我目前正在使用以下链接中提到的代码。

Stackoverflow

如果有人为此提供示例代码,那将对我有所帮助。

提前致谢。

1 个答案:

答案 0 :(得分:2)

DependentColumn可能会提供一些指导。如果从属列也可以编辑,请参阅这些related examples

image