我需要根据所选行(由用户)从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;
}
}
答案 0 :(得分:1)
int linha = Tabela.getSelectedRowCount();
这将使所选行的数量不是所选行的列表。
您必须使用getSelectedRows
Tabela.getSelectedRows();
将返回所有选定行的索引[返回整数数组int[]
]
您要将selectedRow计数分配给班级ger
Gerar ger = modelo.getGerar(linha);
并且在你正在调用的for循环中
int nr = ger.getNr();
将返回与您调用的次数相同的值,因为该值在forloop
之前设置答案 1 :(得分:0)
这就是我这样做的方式:
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; - &gt; private Integer nr;)