在封闭范围中定义的局部变量num必须是final或实际上是final



单击删除button时,我希望它显示选中了哪个checkbox。但是,它们是num下的一条红线,该红线位于删除button代码中。

for(int i=0;i<num;i++)

deleteAdmin.java

public deleteAdmin()
    {
        int num=0;
        JButton back= new JButton("Back");
        JButton delete= new JButton("Delete");
       JPanel topPanel = new JPanel(new GridLayout(1, 0, 3, 3));
        topPanel.add(back);
        topPanel.add(delete);

        adminAPI admin = new adminAPI();
        List<String>allName = null;
        try {
            allName= admin.displayName(); // retrieve all names from MySQL and store to list
            num= admin.displayCheckBoxAndLabel(); // get total row numbers
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Object [] o1=allName.toArray(); // convert arrayList to array
        JCheckBox[] checkBoxList = new JCheckBox[num];
        JPanel checkBoxPanel= new JPanel(new GridLayout(0,5,5,5));
        for(int i = 0; i < num; i++) {  
            checkBoxList[i]= new JCheckBox(""+o1[i]); // replace each checkbox with name
            checkBoxPanel.add(checkBoxList[i]);
        }
          delete.addActionListener(new ActionListener(){ // if delete button clicked
                public void actionPerformed(ActionEvent e)
                {
                    for(int i=0;i<num;i++)
                    {
                        if(checkBoxList[i].isSelected())
                            System.out.println(i);
                    }
                }

            });
         setLayout(new BorderLayout(5, 5));
          add(topPanel, BorderLayout.PAGE_START);
           add(checkBoxPanel, BorderLayout.CENTER);
           setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
    }

错误

线程"AWT-EventQueue-0"java.lang中出现异常。错误:未解决编译问题:封闭范围中定义的局部变量num必须是final或实际上是final在gui.deleteAdmin$1.actionPerformed(deleteAdmin.java:86)

我是否正确地执行了它?

声明此

int num;

作为类变量,并在中对其进行初始化

public deleteAdmin()
    {
        num=0;

相关内容

最新更新