ActionPerformed Variable übergeben

Luecx

Mitglied
Java:
	public void setNewField(int x,int y,int width,int height){
		for (int i = 0; i < 64; i++) {
			buttonArray[i] = new JButton();
			buttonArray[i].setBackground(Color.gray);
			buttonArray[i].setBounds(i%8*(width/8)+x,i/8*(height/8)+y,width/8,height/8);
		
			
			if (i%2 == 1)
			{
				if ((i/8)%2 == 1)
				{
					buttonArray[i].setBackground(Color.WHITE);
				}
				
			}
			else{
				if ((i/8)%2 == 0)
				{
					buttonArray[i].setBackground(Color.WHITE);
				}
				
			}
			panelButton.add(buttonArray[i]);
			buttonArray[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					System.out.println(i);
				}
			});
		}
	}

Ich hab ein ButtonArray (buttonArray) wo ich jeweils dann den Buttons die Position und den ActionListener zuweise. jedoch will ich, wenn ich auf buttonArray[a] klicke, soll a in der Konsole ausgegeben werden. Ich weiß wo der Fehler ist, und zwar das i eine lokale Variable ist, jedoch hab ich keine Ahnung wie ich das Problem beheben kann. Hat Jemand eine Lösung??

mfg. Luecx
 
Entweder du schreibst die nummer in den Button (mit set text und parst dann), oder du musst alles in eine liste packen. Dh. jeden Button nicht nur auf das panel sondern noch in eine liste adden.
Dann kannst du mit ActionEvent evt.getSource() vergleichen welcher Button den gedrückt wurde.
 
Danke ! habs jetzt auf ne andere weise noch geschafft. hab ne neue variable final f = i gemacht, auf die konnte ich dann zugreifen 🙂
 
Was? Du kannst aber i nicht final machen, weil i keinen fixen wert hat ???
Ich kann mir nicht vorstellen wie das gehen soll 😀

Edit: Ah jetzt hab ichs gecheckt. Ist aber ganz schön tricky was du da machst 😉
 
Zuletzt bearbeitet:

Zurück
Oben