2

请原谅我缺乏知识和可能不恰当的术语,因为我是 Java 新手。到目前为止,这是我的代码的简化版本:

import javax.swing.ImageIcon;

public class Cards {
    static ImageIcon CA = new ImageIcon("classic-cards/1.png");
}

同样在另一个类中,其中playerCard[]有一个数组JLabels

String suit = "C";
String rank = "A";
playerCard[playerTurn].setIcon("Cards." + suit + rank);

显然setIcon不使用字符串作为参数,因此这不起作用。我怎样才能让它工作?由于这是一副扑克牌,因此等级并不总是“C”和“A”,但我这样做是为了简化。

4

2 回答 2

4

创建一个包含字符串和图标的地图。

// Create the Map
HashMap<String, Icon> map = new HashMap<String, Icon>();
...
// Add data to the Map
map.put("Cards.CA", CA);
...
//  Access the Map by your key
setIcon(map.get("Cards." + suit + rank));
于 2013-04-19T03:49:31.113 回答
1

由于JLabel图标始终获取Icon对象,因此您可以在此处设置图标的名称,然后将其传递给您的 setIcon。没有重载方法。JLable#setIcon(String)它只有一种方法JLable#setIcon(Icon)。请试试这个

  Icon icon = new ImageIcon("Cards." + suit + rank);
     //here could be any resource path and name like "/foo/bar/baz.png"
    playerCard[playerTurn].setIcon(icon);
于 2013-04-19T03:51:50.253 回答