Klick auf ein Rechteck

Hallo

Auf einer Canvas habe ich zwei Rechtecke. Blau und Grün die ich auf GraphicsContext mit fillRect… gezeichnet habe

Beim Klick auf den Blauen soll z.b die Farbe wechseln. Wie ich dir Farbe wechsel weis ich.

Was ich nicht weis ist, wie gebe ich dem Rechteck eine art ActionListener?
Mit
RoundRectangle2D rect = new RoundRectangle2D()
Kann ich ich den MouseListener setzen doch dann weis ich nicht wie ich rect an die GraphicsContext zeichnen soll.
Eine Methode wie gc.draw(rect). Habe ich leider nicht gefunden. Hat jemand Rat?

Vielen Dank in der späten Stunde

wie sieht denn Dein Code bisher aus?

Vergleichen kannst Du hier:

bye
TT

Hi
Wie gesagt so wie es im Link ist, ist es ohne die Canvas.

Ich brauch aber die canvas und das gc.

		 
		 
		 gc = canvas.getGraphicsContext2D();
gc.fillRoundRect(...)```

Dem RoundRect kann ich jetzt keinen Listener hinzufügen.
Und ein Rectangle Objekt wie in deinem Link kann ich nicht in ein gc Zeichnen. bzw ich weis nicht wie es geht.

Alle probleme würden sich in Luft auflösen wenn mir jemand zeigt wie ich
``` RoundRectangle2D rect = new RoundRectangle2D()```

Auf einen GraphicsContext2D einer Canvas zeichnen kann

RoundRectangle2D rect = new RoundRectangle2D()
canvas = new Canvas(200,200);
gc = canvas.getGraphicsContext2D();
// und jetzt ???
gc.add // set // draw // paint rect nichts passt.

das hier sieht ziemlich genau nach dem Thema aus:
http://www.isr.umd.edu/~austin/ence688r.d/java-swing/java2d.d/DemoRoundRectangle.java
(edit: außer vielleicht JavaFX-Anteil :wink: )

edit: sieht aber so aus als kann man mit getGraphicsContext2D() nur simples malen,
also z.B. fillRoundRect() mit den übernommenen Koordinaten, da passt der Link auch mit Listener auf Pixel-Vergleich-Ebene ganz gut

wenn richtige Objekte, dann doch wohl Scene usw., aber dazu sollte ich ohne Kenntnisse nun langsam schweigen

SlaterB hat recht: Mit Canvas kann man nur rumpinseln. So wie Du das vorhast funktioniert das leider nicht. Nimm dir eine AnchorPane und setze da die RoundRectangle2D hinein. Diesen Rechtecken fügst Du dann entsprechende EventHandler hinzu:

		{
			@Override
			public void handle(MouseEvent arg0)
			{
				blauFärben();
			}
		});```