在循环中创建的按钮在单击时都会执行相同的操作

时间:2017-05-06 18:34:12

标签: java swing jtable jbutton

我目前正在尝试使用来自互联网的ButtonColumn在Java中做一些事情,这允许我在JTable单元格内创建可点击按钮。但我需要制作多个按钮,并为每个按钮指定它自己的动作参数。所以我有这个代码:

DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
dtm.setNumRows(uziv.size());
int riadok = 0;

for (int i = 0; i < uziv.size(); i++) {
    jTable1.setValueAt(uziv.get(i).getMeno(), riadok, 0);
    jTable1.setValueAt(uziv.get(i).getPriezvisko(), riadok, 1);
    jTable1.setValueAt(uziv.get(i).getEmail(), riadok, 2);
    jTable1.setValueAt(uziv.get(i).getLogin(), riadok, 3);
    int idUz = uziv.get(i).getId();

    Action ban = new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
            int modelRow = Integer.valueOf(e.getActionCommand());
            db.zabanujUzivatela(db.selectId(idUz));
        }
    };

    ButtonColumn col = new ButtonColumn(jTable1, ban, 4);    
    riadok++;
}

但问题是我的idUziv甚至在for cyclus期间发生了变化,最后当我运行我的程序并点击任何按钮时,所有按钮都指向同一个{{1}当他们的行动被执行时。我真的没有想法我怎么能做到这一点。我需要让它像第一个按钮点击指向idUziv,值为1,例如,第二个值为2,依此类推......你知道如何识别吗?或者甚至可能吗? 非常感谢您的每一个答案

0 个答案:

没有答案