Java 使用组合框更新JTable中的特定单元格

Java 使用组合框更新JTable中的特定单元格,java,swing,jtable,jcombobox,tablecelleditor,Java,Swing,Jtable,Jcombobox,Tablecelleditor,我正在使用DOM解析器读取数据以更新JTable。我有一个列(ValidValues),它不一定位于XML中 但是,如果在从XML读入时找到了这个标记,我将获取该值并使用它从SQL查询返回可用记录的向量 然后,我希望在JTable中填充一个特定的组合框,其中包含读取标记的正确行上返回的值。例如,在从XML文档中读入第17行之前,我可能不会读取标记 我已经在同一个代码中完成了两个类似的JCombo框,但它们保持不变,因此没有任何问题 由于单元格之间会发生变化,我不确定如何继续,我浏览了Oracle

我正在使用DOM解析器读取数据以更新
JTable
。我有一个列(ValidValues),它不一定位于XML中

但是,如果在从XML读入时找到了这个标记,我将获取该值并使用它从SQL查询返回可用记录的向量

然后,我希望在JTable中填充一个特定的组合框,其中包含读取标记的正确行上返回的值。例如,在从XML文档中读入第17行之前,我可能不会读取标记

我已经在同一个代码中完成了两个类似的JCombo框,但它们保持不变,因此没有任何问题

由于单元格之间会发生变化,我不确定如何继续,我浏览了Oracle教程,但它们似乎只演示了如何更改一列。进一步的研究也没有发现与这一领域有关的东西

通过向量更新的常量JComboBox代码:

        propColumn = table.getColumnModel().getColumn(ENV_PROPERTIES_COLUMN);
        propComboBox = new JComboBox();
        propComboBox.addItem("");
        constructEnvProperties();
        propColumn.setCellEditor(new DefaultCellEditor(propComboBox));

public void constructEnvProperties(){

    IWM781EnvProfilePropertiesCtl ctl = new IWM781EnvProfilePropertiesCtl();

    Vector<IWM781EnvProfileProperties> recordSet = ctl.getRecordSet("TestEnvXXX", con);

    for(int i = 0; i < recordSet.size(); i++){
        logger.debug(recordSet.get(i).getProp781Property());
        propComboBox.addItem(recordSet.get(i).getProp781Property());    
    }
}
因为它引用了整个专栏,但任何想法都将不胜感激

我还简要阅读了 TabelCopultus的API,我仍然在中间,看看是否能找到引用列行的方法。


提前感谢

听起来有些行可能有不同的
JComboBox
值。您可以利用中所示的方法,该方法覆盖
getCellEditor()
,为某些行提供所需的内容。

非常感谢您的帮助,覆盖getCellEditor提供了更多的自由,可以具体定义如何设置单元格;当您使用DOM解析器时,考虑在<代码> > ActucTababMuldel[/Cord]的具体实现中包含<代码>文档<代码>。原谅我,但您的意思是什么?我已经实现了我自己的自定义表模型,该模型扩展了AbstratDataModel,并将其与我的JTable一起使用,但在我想到的任何时候都不将其引用到文档中,其中,
TableModel
访问一个私有数据结构以履行其合同。我已经完成了项目本身,因此可能会继续修改它并尝试以这种方式实现它
if(tableEntryElement.getElementsByTagName("ValidValues").item(0) != null){

     // Build combo box based on <SystemCode> tag
    logger.debug(tableEntryElement.getElementsByTagName("ValidValues").item(0).getTextContent());

        TableColumn optionColumn = table.getColumnModel().getColumn(OPTION_COLUMN);

        JComboBox optionComboBox = new JComboBox();
        optionComboBox.addItem("");
        constructOptions(tableEntryElement);
        optionColumn.setCellEditor(new DefaultCellEditor(optionComboBox));  
    }
     TableColumn optionColumn =  table.getColumnModel().getColumn(OPTION_COLUMN);