Hilfe bei Java Code

Hatebreed89

Grünschnabel
Hallo zusammen,

vlt. könnt ihr mir ja helfen.
Der folgende Code hat grüne fenster und ändert bei klicken auf ein Fenster dessen Farbe in rot
wenn man dann auf das nächste fenster klickt, wir das auch rot, nur das letzte wird dann wieder grün

könnt ihr mir sagen wie man das hinbekommt, dass alle fenster, die bereits angeklickt wurden auch rot bleiben?
ich wäre euch sehr dankbar

Code:
import	java.applet.*;
import	java.awt.*;
import	java.awt.event.*;



    public class aufgabe2 extends Applet implements MouseListener {

        Image	hotel1;
	String  farbe = "#ff0000";
	String  farbe1 = "#00ff00";
	int zx [] = {10, 60, 190, 240, 286, 329, 379, 501, 546 };
	int zy [] = {140, 180, 220, 260};
	int k=0;
	int x=0;
	int y=0;


	public void init() {

		hotel1 = getImage (getDocumentBase (), "hotel.gif");
        	this.addMouseListener(this);
       	}

	public void paint (Graphics g){

		g.drawImage(hotel1,0,0,this);

		for (int j=0; j<=3; j++){
			for (int i=0; i<=8; i++){
				g.setColor (Color.decode (farbe1));
  				g.fillRect (zx[i], zy[j],10, 20);

			}
		}

	 	if (k==1){
			g.setColor (Color.decode (farbe));
  			g.fillRect (x, y,10, 20);
			k=0;
		}

	}

       	public void mousePressed(MouseEvent evt) {

		boolean b = false;

		x = evt.getX();
		y = evt.getY();

		for (int j=0; j<=3; j++){
			if ((y>zy[j])&&(y<zy[j]+20)){b=true;}
			for (int i= 0; i<=9; i++){if (b && (x > zx[i]) && (x < zx[i]+10)) { k=1; b= false;x=zx[i]; y=zy[j];repaint();}
			}
 		}

       	}

	public void mouseEntered(MouseEvent evt) { }
       	public void mouseExited(MouseEvent evt) { }
       	public void mouseClicked(MouseEvent evt) { }
       	public void mouseReleased(MouseEvent evt) { }

    }

Vielen Dank im voraus schonmal

mfg Hatebreed
 
Leg ein Array für die Color-Werte der Fenster an. Zu Beginn ist jeder Wert des Arrays Color.GREEN, bei Klicks änderst Du den entsprechenden Eintrag auf Color.RED. In der for-Schleife, in der die Fenster gezeichnet werden, setzt Du dann jeweils den Wert aus dem Array.

Code:
		for (int j=0; j<=3; j++){
			for (int i=0; i<=8; i++){
				g.setColor (colors[i][j]);
  				g.fillRect (zx[i], zy[j],10, 20);

			}
		}
 
Zurück