如何绑定jtable的列取决于javajtable中前一列的值

如何绑定jtable的列取决于javajtable中前一列的值,java,swing,event-handling,jtable,Java,Swing,Event Handling,Jtable,我有五列的表格。在组合框中有两个从数据库动态绑定的列。一个组合的选定值将影响另一个组合的值。我的基本问题是 第1列(组合框)用户选择其中一个 第2列(根据第1列显示结果,用户选择第2列选项之一 第3列显示的结果取决于第2列 我尝试使用列单元格编辑器。但该方法的问题是,若选择了列,则所有结果将显示在所有行中。 我想为不同的行和列提供不同的结果 int col = jTblItemInfo.getSelectedColumn(); int row = jTblItemInfo.getSele

我有五列的表格。在组合框中有两个从数据库动态绑定的列。一个组合的选定值将影响另一个组合的值。我的基本问题是

第1列(组合框)用户选择其中一个 第2列(根据第1列显示结果,用户选择第2列选项之一 第3列显示的结果取决于第2列

我尝试使用列单元格编辑器。但该方法的问题是,若选择了列,则所有结果将显示在所有行中。 我想为不同的行和列提供不同的结果

int col = jTblItemInfo.getSelectedColumn();
    int row = jTblItemInfo.getSelectedRow();
    if (col == 2) {
        TableColumn colum = jTblItemInfo.getColumnModel().getColumn(3);
        JComboBox batch_box = new JComboBox();
        String item_name = jTblItemInfo.getModel().getValueAt(row, col - 1).toString();
        int group_id = 0;
        if (item_name == null || item_name.equals("")) {
        } else {

            int item_id = new com.inventorymgmt.dao.ItemInfoDAO().getItemIdByName(item_name);
            group_id = new com.inventorymgmt.dao.ItemInfoDAO().getGroupIDByItemID(item_id);

            for (String result : new com.inventorymgmt.dao.BatchPriceDAO().getBatchNO(item_id)) {
                batch_box.addItem(result);
            }
            colum.setCellEditor(new DefaultCellEditor(batch_box));
        }
        if (!(group_id <= 0)) {

            jTblItemInfo.setValueAt(new com.inventorymgmt.dao.ItemGroupDAO().getItemGroupNameById(group_id), row, 6);
        }
        DefaultTableCellRenderer cellRenderer = new DefaultTableCellHeaderRenderer();
        cellRenderer.setToolTipText("Choose Batch No");
        colum.setCellRenderer(cellRenderer);

    } else if (col == 4) {
        System.out.println("i n column 4");
        String item_name = jTblItemInfo.getModel().getValueAt(row, 1).toString();
        String batch_no = jTblItemInfo.getModel().getValueAt(row, col - 1).toString();
        int item_id = new com.inventorymgmt.dao.ItemInfoDAO().getItemIdByName(item_name);
        if (item_name == null || batch_no == null) {
        } else {
            String[] str = //code to a
            // String price_str = str[0] + "";
            jTblItemInfo.setValueAt(str[0], row, col);//price
            jTblItemInfo.setValueAt(str[1], row, 5);//expiry date
        }
    }
int col=jTblItemInfo.getSelectedColumn();
int row=jTblItemInfo.getSelectedRow();
如果(列==2){
TableColumn column=jTblItemInfo.getColumnModel().getColumn(3);
JComboBox批处理_box=新JComboBox();
字符串item_name=jTblItemInfo.getModel().getValueAt(行,列-1.toString();
int group_id=0;
if(item_name==null | | item_name.equals(“”){
}否则{
int item_id=new com.inventorymgmt.dao.ItemInfoDAO().getItemIdByName(item_名称);
group_id=new com.inventorymgmt.dao.ItemInfoDAO().getGroupIDByItemID(item_id);
for(字符串结果:new com.inventorymgmt.dao.BatchPriceDAO().getBatchNO(项id)){
批次箱添加项(结果);
}
column.setCellEditor(新的DefaultCellEditor(批处理盒));
}

如果(组中的ID听起来像是代码中的错误,你没有显示;-)考虑显示一个SSCCE,它演示了你正在做什么以及它是如何出错的。