Массив изображений JLabel

Я пытаюсь загрузить одно и то же сохраненное изображение jlabel дважды в панель сетки, однако вместо создания двух экземпляров изображения изображение отображается только один раз, а затем перемещается.

Как я могу сохранить одну и ту же позицию JLabel в массиве частей в более чем один JLabel в массиве boardLabels.

Спасибо :)

public static JPanel boardPanel = new JPanel(new GridLayout(4, 0));
public static JLabel pieces[] = new JLabel[2];
private static JLabel[] boardLabels = new JLabel[4];

public MainFrame() {
    pieces[0] = new JLabel(new ImageIcon(System.getProperty("user.dir") + "/images/piece1.png"));
    pieces[1] = new JLabel(new ImageIcon(System.getProperty("user.dir") + "/images/piece2.png"));

    this.add(boardPanel);
    displayGUIboard();
}


public static void displayGUIboard() {

    //ERROR - the label in pieces[0] is not copied into both boardLabels [0] and [1]
    boardLabels[0] = pieces[0];
    boardLabels[1] = pieces[0];

    boardPanel.add(boardLabels[0]);
    boardPanel.add(boardLabels[1]);
}

public static void main(String[] args) {
    MainFrame frame = new MainFrame();
    frame.setVisible(true);
    frame.setSize(600, 600);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Это работает

    boardLabels[0] = new JLabel(pieces[1]);
    boardLabels[1] = new JLabel(pieces[1]);

при использовании ImageIcons, но я хочу избежать этого, поскольку для обновления платы мне придется удалить, а затем перезагрузить JLabels. Я бы предпочел просто обновить уже загруженные ярлыки.

edit Я пробовал это раньше, но он выдает исключение нулевого указателя ...

    boardLabels[0].setIcon(pieces[1]);
    boardLabels[1].setIcon(pieces[1]);

    boardPanel.add(boardLabels[0]);
    boardPanel.add(boardLabels[1]);

Ответы на вопрос(2)

Ваш ответ на вопрос