OnClick Methode für ArrayList in for-loop(Java)

...komplette Frage anzeigen

2 Antworten

Wann soll das die Farbe ändern? Jetzt, während, du es durchgehst? Oder später, wenn es dann tatsächlich angeklickt hast. (Was tut deine Schleife eigentlich? Addet die einen Eventhandler zu jedem Pixel? Und warum immer einen Neuen?)

Wenn es Zweiteres ist, folgendermaßen (beim Ersten musst du den Code ja nur unter die Schleife setzen):

@Override
public void handle(MouseEvent e) {
rectangles.hierDieFarbÄnderungsMethode(Color.deineFarbe);
}

Oder ist dein Problem, dass du nicht weißt, wie die FarbÄnderungsmethode heißt?

Theoretisch müsste der EventHandler auf diese Art und Weise das rectangle kennen, wenn es doch nicht passt, könntest du den Eventhandler ja so definieren: (Vor allem, wenn rectangles eine List<Rectangle> ist):

 rectangles.get(i).setOnMouseClicked(new EventHandler<MouseEvent>() {
Rectangle myRectangle = rectangles.get(i);

@Override
public void handle(MouseEvent e) {
myRectangle.hierDieFarbÄnderungsMethode(Coler.deineFarbe);
}
});

Es wäre hilfreich, wenn du verrätst, was deine Variablen für Typen und Werte haben.

Sonst noch Fragen? Ich hoffe, dass ich das Problem lösen konnte ;-)

Quarcki05 20.02.2017, 15:26

Du hast mir mit deiner zweiten Antwort schon sehr gut geholfen! Danke für die Antwort! ;)

0

Du möchtest eigentlich eine Instanz zur Verfügung haben, auf die du in deiner handle Methode zurück greifen kannst, oder?

Entweder du holst dir dein Rectangle über den index i:

Rectangle rect = rectangles.get(i);

oder du benutzt direkt eine enhanched Loop:

for (Rectangle rect : rectangles) {

...

Um ein Rectangle auszufüllen, sollte man Graphics#fillRect nutzen. 

Über dein Rectangle-Objekt erhälst du ja eigentlich alle benötigten Informationen um das zu bewerkstelligen.

Was möchtest Du wissen?