Есть ли лучший способ добавить тонну JPanels с уникальными изображениями, прикрепленными к массиву?
У меня есть целая колода карт в качестве изображений, которые мне нужны.: а) загрузить в as JPanels и b) отображение в JFrame.
Есть ли лучший способ ввести их в мою программу, чем снова и снова (52x) писать что-то вроде
final JPanel panelName = draw(new ImageIcon("spritesheet.gif"));
Каждое изображение (spritesheet.gif) имеет уникальное имя. Это колода карт.
Вот draw
public static JPanel draw(final ImageIcon img)
{
JPanel panel = new JPanel()
{
private static final long serialVersionUID = 1L;
//paintComponent is called automatically by the JRE whenever
//the panel needs to be drawn or redrawn
public void paintComponent(Graphics g) {
super.paintComponent(g);
img.paintIcon(this, g, 10, 10);
}
};
panel.setOpaque(false);
return panel;
}
1 ответ:
Пока у них есть какая-то закономерность, это может быть легко. Например,Каждое изображение имеет уникальное имя..
"spades-queen.gif"
можно сделать из массиваString[]
мастей, массива уровней, a-
для их разделения и a.gif
на конце..Они отформатированы как
aceSpades
и так далее.Вот реализация:
public class CardNames { public final static String[] SUITS = { "Spades", "Hearts", "Diamonds", "Clubs" }; public final static String[] LEVELS = { "ace", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "jack", "queen", "king" }; public final static String SEP = ""; public final static String XTN = ".gif"; public static void main(String[] args) { for (String suit : SUITS) { for (String level : LEVELS) { System.out.println(level + SEP + suit + XTN); } } } }
Вывод
aceSpades.gif twoSpades.gif threeSpades.gif fourSpades.gif fiveSpades.gif sixSpades.gif sevenSpades.gif eightSpades.gif nineSpades.gif tenSpades.gif jackSpades.gif queenSpades.gif kingSpades.gif aceHearts.gif // ... aceClubs.gif twoClubs.gif threeClubs.gif fourClubs.gif fiveClubs.gif sixClubs.gif sevenClubs.gif eightClubs.gif nineClubs.gif tenClubs.gif jackClubs.gif queenClubs.gif kingClubs.gif