我的JMenuItem和ActionListener有问题,我正在尝试制作一个JMenuItem,它可以选择游戏中的玩家数量,但我的PlayerAlt[i].addActionListener(players);代码给了我一个错误,即“玩家不能被解析为变量”
String[] Players = { "1", "2", "3", "4" };
JMenu pmenu = new JMenu("Players");
final JMenuItem[] PlayerAlt = new JMenuItem[Players.length];
for (int i = 0; i < PlayerAlt.length; i++) {
PlayerAlt[i] = new JMenuItem(Players[i]);
pmenu.add(PlayerAlt[i]);
PlayerAlt[i].addActionListener(players);
}
ActionListener players = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < PlayerAlt.length; i++) {
if (e.getSource() == PlayerAlt[i]) {
Gamerside.add(s1);
}
}
}
};发布于 2013-12-06 11:46:10
变量players是在您想使用它之后声明的。因此,这是无法解决的。
将players声明移至循环上方
ActionListener players = new ActionListener() {
......
};
for (int i = 0; i < PlayerAlt.length; i++) {
.....
PlayerAlt[i].addActionListener(players);
}发布于 2013-12-06 11:46:15
在您的示例中,players在尝试使用它之后被声明为(在两行之后),所以在尝试使用它的时候它是不存在的。
为求澄清:
int b = 4;
b += a; //Error, a does not exist yet..
int a = 2; //...because it is declared herehttps://stackoverflow.com/questions/20423047
复制相似问题