从一行中获取id

时间:2013-11-12 21:52:49

标签: java swing jtable

我有一个显示数据库结果的JTable

for(VoertuigenModel m : vModel.selectVoertuigen())
        {   
            if(m.getStatus().equals("Beschikbaar"))
            {
                tableModelVoertuigen.addRow(new Object[]{
                        m.getMerk(),
                        m.getType(),
                        m.getKleur(),
                        m.getStatus(),
                        m.getId()
                });
            }
        }

看起来像这样

Jtable example

现在如何从选定的行中获取AUTO-ID?

例如,我想选择第3行,然后我想在变量中设置'4'。

1 个答案:

答案 0 :(得分:1)

  

现在如何从选定的行中获取AUTO-ID?

  • 使用ListSelectionListener

  • JTable添加到SelectionModel() addListSelectionListener
  • 在选择事件上,使用table.getSelectedRow()获取表格视图的选定行索引。选择数据实际上描述了"view"中的选定单元格(任何排序或过滤后出现的表格数据),而不是表格模型中的选定单元格。在对列进行排序,过滤或用户操作时,必须使用JTable的转换方法转换选择坐标:

    1. convertRowIndexToModel(row):将行的索引映射到基础TableModel
    2. convertColumnIndexToModel(column):将列索引视图映射到基础TableModel
  • getColumnIndex("AUTO-ID")的列模型上调用JTable获取列索引

     table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    
            @Override
            public void valueChanged(ListSelectionEvent e) {
    
                int row =  table.convertRowIndexToModel(table.getSelectedRow());
                int col = table.getColumnModel().getColumnIndex("AUTO-ID");
    
                int auto_id = (Integer) table.getModel().getValueAt(row, col);
                     // assuming that `m.getId()` is returning `int` 
                    //while adding with addRow() function
            }
        });
    

注意::当您选择多行并想要使用它们时,请使用JTable {{1}}的功能。