2013-01-26, 21:53
#1
Programmet ska fungera så att när jag trycker på en JButton så ska den ändra sin ikon. Jag har problemet att jag inte kan välja vilken knapp jag ska ändra. När jag trycker på vilken knapp som helst så anropas changeIcon för den sista knappen.
Mitt fel är att när changeIcon anropas så ändras den sista knappen i min GridLayout på grund av att det är den som är referensen till instansvariabeln button. Men jag vet inte hur jag ska ska lösa mitt problem :/
Tack på förhand // Softmuppen
Mitt fel är att när changeIcon anropas så ändras den sista knappen i min GridLayout på grund av att det är den som är referensen till instansvariabeln button. Men jag vet inte hur jag ska ska lösa mitt problem :/
Kod:
import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import java.awt.Image; import javax.swing.ImageIcon; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Action; import java.util.ArrayList; public class Editor { private ImageIcon buttonIcon = new ImageIcon(this.getClass().getResource("images/tiles/wood_floor.png")); private ImageIcon activeIcon = new ImageIcon(this.getClass().getResource("images/tiles/stone_brick.png")); private static int row = 5; private static int col = 5; private JFrame frame; private Action changeIcon; private JButton button; public Editor(){ makeFrame(); } public void makeFrame() { JFrame frame = new JFrame("Game Map-Editor"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new GridLayout(col, row)); for(int i = 0; i<(row*col); i++){ button = new JButton(buttonIcon); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {changeIcon(button);} }); frame.add(button); } frame.setResizable(false); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new Editor(); } public void changeIcon(JButton button){ button.setIcon(activeIcon); } }
Tack på förhand // Softmuppen