Tablica obrazów JLabel
Próbuję załadować ten sam zapisany obraz jlabel dwa razy do panelu siatki, jednak zamiast tworzyć dwa wystąpienia obrazu, obraz jest wyświetlany tylko raz, a następnie przenoszony.
Jak mogę przechowywać tę samą pozycję JLabel w tablicy pieces w więcej niż jednym JLabel w tablicy boardLabels.
Dzięki :)
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);
}
To działa
boardLabels[0] = new JLabel(pieces[1]);
boardLabels[1] = new JLabel(pieces[1]);
podczas korzystania z ImageIcons, ale chcę tego uniknąć, ponieważ w celu zaktualizowania tablicy będę musiał usunąć, a następnie ponownie załadować JLabels. Wolałbym zaktualizować już załadowane etykiety.
edytować Próbowałem tego wcześniej, ale zgłasza wyjątek zerowego wskaźnika ...
boardLabels[0].setIcon(pieces[1]);
boardLabels[1].setIcon(pieces[1]);
boardPanel.add(boardLabels[0]);
boardPanel.add(boardLabels[1]);