从 jTable 中的多个选定行获取数据

Getting data from several selected rows in a jTable

我需要根据(用户)选择的行从 jTable 中获取不同的值。
我想我已经拥有的代码应该这样做,但它总是在所有行中显示相同的 nr。
你们能帮帮我吗?

int linha  = Tabela.getSelectedRowCount();
Gerar ger = modelo.getGerar(linha);
System.out.println(linha);

for(int j = 0; j < linha; j ++) 
{
    int nr = ger.getNr();
    System.out.println(nr);

    char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJIKLMNOPQRSTUVWXYZ0123456789".toCharArray();
    StringBuilder sb = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 8; i++) 
    {
        char c = chars[random.nextInt(chars.length)];
        sb.append(c);
    }

    String output = sb.toString();
    System.out.println(output);

    Gerar novo = new Gerar(nr, output);
    modelo.adicionaNovoGerar(novo);
}

更新:

public class Gerar implements Serializable 
{
    private Integer Nr;
    private String Passe;

    public Gerar(Integer Nr, String Passe) 
    {
        this.Nr = Nr;
        this.Passe = Passe;
    }

    public Integer getNr() 
    {
        return Nr;
    }

    public void setNr(Integer Nr) 
    {
        this.Nr = Nr;
    }
}

我是这样做的:

int[] selectedRows = table.getSelectedRows();
if (selectedRows.length != 0) {
    for (int counter : selectedRows) {
        String value= table.getModel().getValueAt(counter, Constants.COLUMN).toString();
        /*
        * do stuff
        */
    }
}

为了提供一些背景信息,我将其与包含文件夹中文件信息的 JTable 一起使用。该应用程序允许我删除文件,所以我使用那段代码检索所选文件的名称并将它们一个一个地删除。

在你的情况下(我认为)这一行:

String value= table.getModel().getValueAt(counter, Constants.COLUMN).toString();

会变成这样:

Gerar ger = modelo.getGerar(counter);

注意:我强烈建议使用小写字母作为属性的首字母(例如:private Integer Nr; -> private Integer nr;)

 int linha  = Tabela.getSelectedRowCount();

这将给出所选行的编号,而不是所选行的列表。

为此你必须选择 getSelectedRows

Tabela.getSelectedRows();

这将 returns 所有选定行的索引[return 一个整数数组 int[]]

并且您正在将 selectedRow 计数分配给 class ger

 Gerar ger = modelo.getGerar(linha);

在您调用的 for 循环中

int nr = ger.getNr();

这将 return 与您调用多次相同的值,因为该值是在 forloop

之前设置的