我正在使用DOM Parser读取数据以更新JTable
。我有一个列(ValidValues),可能不一定位于XML中。
但是,如果在从XML读入时找到此标记,我会获取该值并从SQL查询中使用它来返回可用记录的向量。
然后,我希望使用特定的组合框填充JTable,该组合框在读取标记的正确行上返回。 E.G我可能不会读取标签,直到从XML文档中读入第17行。
我已经在相同的代码中完成了两个类似的JCombo盒子,但它们保持不变,所以它们没有问题。
由于这在单元格之间发生了变化,我不确定如何继续,我查看了Oracle教程,但它们似乎只是演示了如何更改一列。进一步的研究也没有发现与这个领域有关。
通过vector更新常量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());
}
}
尝试使用变体组合框:
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);
因为它引用了整个专栏,但任何想法都会受到高度赞赏。
我还简要阅读了TableColumn
的API,我仍在其中,看看我是否能找到引用该列行的方法。
提前致谢
答案 0 :(得分:2)
听起来有些行可能有不同的JComboBox
值。您可以利用TableComboBoxByRow
中显示的方法,该方法会覆盖getCellEditor()
,为某些行提供所需的editor。