该错误意味着 您不能mi
在内部类中使用局部变量。
要在内部类中使用变量,必须对其进行声明
final。只要
mi是循环计数器并且
final不能分配变量,就必须创建一种变通方法来获取可在内部类内部访问
mi的
final变量中的值:
final Integer innerMi = new Integer(mi);
因此,您的代码将如下所示:
for (int mi=0; mi<colors.length; mi++){ String pos = Character.toUpperCase(colors[mi].charAt(0)) + colors[mi].substring(1); JMenuItem Jmi =new JMenuItem(pos); Jmi.setIcon(new IconA(colors[mi])); // workaround: final Integer innerMi = new Integer(mi); Jmi.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem) e.getSource(); IconA icon = (IconA) item.getIcon(); // HERE YOU USE THE FINAL innerMi variable and no errors!!! Color kolorIkony = getColour(colors[innerMi]); textarea.setForeground(kolorIkony); } }); mnForeground.add(Jmi); }}


