Я пытаюсь создать приложение JFrame на java, похожее на Minesweeper, но с немного другими правилами / целями.
Я создал сетку из JButton, 12x12, и у меня есть 2D-массив JButton.
Я пытаюсь изменить изображение кнопки при ее нажатии (сделать это крестиком или изображением золотого самородка). Я знаю, как это сделать, если бы у меня было индивидуальное имя для каждой кнопки, но мне кажется нелогичным создавать 144 отдельные кнопки и давать каждой из них имя.
Итак, что мне нужно сделать, это в событии щелчка этой кнопки изменить / установить изображение этой кнопки, но в моем слушателе действий я могу понять это только в том случае, если я знаю конкретные координаты массива этой кнопки.
У меня вопрос: как изменить изображение этой конкретной кнопки? Или как мне получить значения кнопки [?] [?], Чтобы я мог изменить изображение этой кнопки?
Спасибо!
public class GoldPanel extends JPanel{
ImageIcon xImage = new ImageIcon("x.png");
ImageIcon goldImage = new ImageIcon("");
losingButtonListener loseButton = new losingButtonListener();
winningButtonListener winButton = new winningButtonListener();
JButton[][] button = new JButton[12][12];
//creates the layout
GridLayout layout = new GridLayout(12,12);
Random myRand = new Random();
public GoldPanel(){
//creates panel for name/title/score/etc
JPanel titlePanel = new JPanel();
add(titlePanel);
JLabel title = new JLabel("Welcome to the Goldmine Game!");
titlePanel.add(title);
//creates panel for the game board
JPanel gamePanel = new JPanel();
add(gamePanel);
gamePanel.setLayout(layout);
for(int i=0;i<12;i++)
{
for(int j=0;j<12;j++)
{
button[i][j] = new JButton(" ");
gamePanel.add(button[i][j]);
button[i][j].addActionListener(loseButton);
}
}
button[0][0].addActionListener(winButton);
}//end constuctor
private class losingButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}//actionPerformed
}//buttonListener
private class winningButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("you win");
}//actionPerformed
}//winningButtonListener
}//end GoldPanel class