A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvjayj 中级黑马   /  2013-8-7 11:28  /  1203 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我现在有一个array,n多个JButton
那我想给他们加上功能总不能一个一个加吧!放在for循环里面貌似还是不行啊!!!
我的代码如下!
  1. public class StudentList implements ActionListener{
  2. private static JButton[] remove;
  3. public void actionPerformed(ActionEvent e){
  4. String numOfStudents = DataManager.getNumberOfStudents(EditClass.getSelectedTableName());
  5.                 try{
  6.                         studentNum=Integer.parseInt(numOfStudents);
  7.                 }
  8.                 catch(NumberFormatException ex){
  9.                         JOptionPane.showMessageDialog(frame, "Should be an integer: "+ex);
  10.                 }
  11. remove = new JButton[studentNum];
  12. for(int i=0;i<studentNum;i++){
  13.                                 remove[i].setBounds(243,92+30*i,85,20);
  14.                                 panel.add(remove[i]);
  15.                                 remove[i].addActionListener(new ActionListener(){
  16.                                         public void actionPerformed(ActionEvent ae){
  17.                                                 try{
  18.                                                         int result = JOptionPane.showConfirmDialog(null,
  19.                                                                         "Delete student?");
  20.                                                         switch (result) {
  21.                                                         case JOptionPane.YES_OPTION:                                                               
  22.                                                                 DataManager.deleteStudent(Integer.parseInt(studentID[i]),studentName[i]);
  23.                                                                 break;
  24.                                                         case JOptionPane.NO_OPTION:
  25.                                                                 break;
  26.                                                         case JOptionPane.CLOSED_OPTION:
  27.                                                                 break;
  28.                                                         }
  29.                                                 }catch (Exception ex){
  30.                                                         JOptionPane.showMessageDialog(panel, ex);
  31.                                                 }
  32.                                         }
  33.                                 });
  34.                         }
复制代码
Eclipse说问题出在DataManager.deleteStudent(Integer.parseInt(studentID),studentName);
这一行!
Cannot refer to a non-final variable i inside an inner class defined in a different method
这是怎么回事

我本来想用
public void actionPerformed(ActionEvent ae)
ae.getSource()这个方法不过这是array啊.....我应该咋办。。。。!
补充一下!Datamanager是另一个class
一定要帮忙啊谢谢大家!

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
顶一顶         
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马