0

我有一个显示数据库结果的 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 示例

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

例如,我想选择第三行,然后我想在变量中设置“4”。

4

1 回答 1

1

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

  • 添加ListSelectionListenerJTable SelectionModel()使用addListSelectionListener

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

    1. convertRowIndexToModel(row): 将视图的行索引映射到底层TableModel
    2. convertColumnIndexToModel(column):将视图的列索引映射到底层TableModel
  • getColumnIndex("AUTO-ID")通过调用onJTable的列模型来获取列索引

     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
            }
        });
    

注意::当您选择多于一行并想要使用它们时使用int[] getSelectedRows()的功能。JTable

于 2013-11-12T22:34:44.233 回答