pat*_*957 5 java swing loops final
我正在编写一个Swing应用程序并尝试创建一个菜单,其中每个菜单项都有自己的操作:
以下是我想要解决的问题:
private void createGameLevelMenuItems(JMenu menu){
for (int i = 0; i<10; i++) {
JMenuItem item = new JMenuItem(new AbstractAction("Level-" + i) {
@Override
public void actionPerformed(ActionEvent e) {
game.loadGame(i);
board.refresh();
pack();
}
});
menu.add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不能使用loadGame(i),因为它说i必须是最终的.我理解这个的原因,但我不知道如何解决这个问题.
快速技巧:在循环的每次迭代中定义一个最终变量,该变量采用(非最终)值i并使用它:
private void createGameLevelMenuItems(JMenu menu){
for (int i = 0; i<10; i++) {
final int j = i; // <--- this line do the thing
JMenuItem item = new JMenuItem(new AbstractAction("Level-" + j) {
@Override
public void actionPerformed(ActionEvent e) {
game.loadGame(j);
board.refresh();
pack();
}
});
menu.add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |