当前位置: 首页 > 知识库问答 >
问题:

如何通过JTable中的JComboBox获取所选值

宦砚
2023-03-14

我创建了一个带有JComboBox CellEditor列的JTable。很好。然而,当我试图通过组合框检索所选值时,我只得到鼠标在特定行中选择的值。我似乎无法按每行获取所选值。这是我的代码:

  addressList = new ArrayList<>(); 
    for(int currentRow = 0; currentRow < editAddressFrm.getAddressTable().getRowCount(); currentRow++)
    {

            //ADDRESS
    offenderAddress = new MyAddress();


    DefaultCellEditor ownerEditor = (DefaultCellEditor) editAddressFrm.getAddressTable().getCellEditor(currentRow, 1);       
    JComboBox ownerCb =(JComboBox) ownerEditor.getComponent();
    ListItem selectedItem =(ListItem) ownerCb.getSelectedItem();  //HERE IS WHERE I HAVE THE PROBLEM.I AM NOT GETTING THE VALUE FOR THE SPECIFIC ROW

    offenderAddress.setOwnerCode(selectedItem.getID());

    offenderAddress.setLine1(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 2).toString() 
            );

    offenderAddress.setLine2(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 3).toString() );

    offenderAddress.setCity(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 4).toString() );
    offenderAddress.setProvince(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 5).toString() );
    offenderAddress.setPostalZone(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 6).toString() );
    }

共有1个答案

赵昊阳
2023-03-14

组合框仅用于编辑单元格。它不包含单元格的数据。

您需要从表中获取数据,这是通过使用:

table.getValueAt(...);

或者

table.getModel().getValueAt(...);

取决于你的具体要求

如果您仍在编辑单元格,那么数据可能还没有保存到模型中。要解决这个问题,请参见:表停止编辑。

 类似资料:
  • 问题内容: 我想通过值而不是索引在JComboBox中设置选定的索引。怎么做?例 好的,我已经稍微修改了我的问题。我忘了我在JComboBox中有一个自定义项目,这使其变得更加困难。我不能做setSelectedItem,因为我在每个项目中都有一个ComboItem。因此,我该如何完成呢? 问题答案: 。您只需阅读javadoc即可找到它。 编辑:由于您更改了问题,我将更改答案。 如果要选择带有“

  • 就像渲染器和编辑器听起来一样简单,尽管有十几个这样的书签,我还是回到类似的问题上,我缺少了一些基本的东西。我想把任何旧的文本文件拖到一个2列的JTable中,让第一列显示文件名,第二列包含一个JComboBox,它的选项取决于拖动文件的内容。(在下面的代码中,我只是伪造了几个条目。) 这一切都正常工作,直到我从一个组合框中做出一个选择--该选择不显示--只是一个组合框,正确填充但没有做出选择。我知

  • 我试图在点击组合框时获取当前行数据。我的问题是,如果我试图在单击组合框时获取详细信息,则检索到的数据是错误的。 这是在集合中填充无效数据。请按照下面提到的确切步骤进行复制。 请运行代码以复制该问题,因为它只在初始选择期间工作,而不是之后。 注意:请仅在第二列中单击“直接” 下面是示例代码:

  • 在我的Jtable实例中,一个列有jcombobox,现在我想要的是,一旦所选jComboBox的值被更改,就选择单元格的行和列。 如果我使用jcombobox的actionPerformed事件,并获得jtable.getSelectedrow和column。系统给我最后选择的行和列,而不是当前的行和列。 请指导我该怎么做..谢谢

  • 问题内容: 嗨, 这是从JComboBox作为字符串获取值的正确方法,以及为什么它是正确的方法。谢谢。 要么 问题答案: 如果仅在JComboBox中放置(非空)引用,则两种方法都可以。 但是,第一种解决方案还允许将来进行修改,您可以在组合框中插入s,s,s等作为项目。 为了对值保持鲁棒性(仍然不强制转换),您可以考虑第三个选择:

  • 现在,在第一行第三列(“OK”)中,您可以在JComboBox中选择表示一行的不同条目。因此一行有三个引用另一行的JComboBoxes。如果您在这样的JComboBox中单击,您会注意到它总是选择第一个条目,而不是您在单击之前看到的带有数字的条目。 也许现在你明白我想做什么了?