我正在尝试在带有颜色的面板中创建一组Jbutton。每个都有不同的文本和颜色属性(从数组中获取)

这是我的代码

for(int e = 0;e<game.players.get(0).getHand().size();e++){
    panel.add(new JButton(){{
       setText(game.players.get(0).getHand().get(e).getValue());
       setBackground(game.players.get(0).getHand().get(e).getColor());
    }});
}


但是我得到一个错误。它说我无法访问变量e,因为它没有被声明为final(从内部类内部访问本地访问e)。

如果我做

 for(int e = 0;e<game.players.get(0).getHand().size();e++){
   panel.add(new JButton(game.players.get(0).getHand().get(e).getValue()));
 }


除了按钮没有颜色外,它的工作原理都非常好。

最佳答案

您可以在将JButton添加到面板之前简单地创建它:

MyHand myHand = game.players.get(0).getHand();
for (int e=0; e < myHand.size(); e++) {
   JButton button = new JButton(myHand.get(e).getValue());
   button.setBackground(myHand.get(e).getColor());
   panel.add(button);
}


从此代码中,getHand似乎返回一个Iterable集合。在这种情况下,可以使用enhanced for loop

10-08 12:53