首页 > 解决方案 > JTable重新排序时如何跟踪colem索引?

问题描述

我有 jTable,其名称如下所示:-

columns = {"ID", "NAME", "PHONE"};

包含值:

----------------------------
|ID |   NAME   |   PHONE   |
----------------------------
| 1 |   Adeeb  |   0750000 |
| 2 |   Jack   |   0777777 |
----------------------------

这个 jTable 有 ReorderingAllowed :

jTable1.getTableHeader().setReorderingAllowed(true);

我有一个按钮可以从 Colem "Name" 获取值:

   for (int k = 0; k < jTable1.getRowCount(); k++) {

        String qty = (String) jTable1.getValueAt(k, jTable1.getColumn("NAME").getModelIndex());
        
        JOptionPane.showMessageDialog(null, "Name Is : " + qty);

    }

它正在获取值如下:

Name Is : Adeeb
Name Is : Jack

但是,如果用户按照以下示例排列字段:

------------------------------
|ID |   PHONE    |   Name    |
------------------------------
| 1 |   0750220  |    Adeeb  |
| 2 |   0777777  |    Jack   |
------------------------------

它正在获取值如下:

Name Is : 0750220
Name Is : 0777777

我需要它像以前一样给我结果,所以我需要它来保持跟踪列“名称”并从中获取价值,即使用户重新排序它!

标签: javaswingjtable

解决方案


通过这个修复它:

TableColumnModel tcms = jTable1.getColumnModel();

    for (int k = 0; k < jTable1.getRowCount(); k++) {

    int location = tcms.getColumnIndex(model.getColumnName(1));

    String qty = (String) jTable1.getValueAt(k, location);

    JOptionPane.showMessageDialog(null, qty);
}

推荐阅读