Есть ли лучший способ добавить тонну 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 2

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