JavaFX Rechteck mit MausListener

Mikrowelle

Bekanntes Mitglied
Hallo

Vorweg, ich hatte diese Frage auch im anderen Forum gestellt leider ohne Erfolg.

Ich möchte auf einer Canvas zwei Rechtecke Zeichnen und wenn einer dann angeklickt wird. Soll er seine Farbe ändern.

Code:
canvas = new Canvas(400, 400);
gc = canvas.getGraphicsContext2D();
gc.fillRoundRect(....);

Wie füge ich jetzt einen OnClick Listener dem Rechteck hinzu?
 

dzim

Top Contributor
Ich hab zwar noch nicht mit Canvas gearbeitet, aber ich vermute mal: gar nicht. OnClick/Tocuh auf das Canvas selbst; checken, ob du in den Boundaries des Rechecks X gedrückt hast und dann neu zeichen. Oracle macht zwar was anderes, aber der Weg geht in die selbe Richtung:
Working with Canvas | JavaFX 2 Tutorials and Documentation

Oder hier ein komplexeres Bsp:
Tutorial: A glimpse at JavaFX's Canvas API

Generell finde ich da einiges, was man als Vorlage nutzen könnte, wenn man einfach nur nach "javafx canvas" sucht.

Schau dir auch die Doku zu Canvas und GraphicsContent and:
Canvas (JavaFX 2.2)
GraphicsContext (JavaFX 2.2)

Grüsse,
Daniel
 

Newcomer2

Aktives Mitglied
Hallo Mikrowellen,

ich hatte mal nen ähnliches Problem. Wollte auch 2 Rechtecke zeichnen und dann nur bei Klick auf eines der beiden Rechtecke nen Event auslösen. Gelöst hatte ich das folgendermaßen:

Java:
@SuppressWarnings("static-access")
	protected void processMouseEvent(MouseEvent event)
	{
		int x=event.getX(),y=event.getY();
		if ( event.getID()==event.MOUSE_CLICKED)
		{
			if((x>=getSize().width/2-80&x<=getSize().width/2-10&y>=getSize().height-56&y<=getSize().height-16))
			{	
				repaint();	
				super.processMouseEvent(event);

			}
			if((x>=getSize().width/2+10&x<=getSize().width/2+80&y>=getSize().height-56&y<=getSize().height-16))
			{
				repaint();	
				super.processMouseEvent(event);
			}
		}
	}

public void pfeillinks(Graphics g,int x,int y)
	{
		g.setColor(Color.black);		
		g.drawRect(x-1, y-1, 71, 41);
	}
	
	public void pfeilrechts(Graphics g,int x, int y)
	{
		g.setColor(Color.black);		
		g.drawRect(x-1, y-1, 71, 41);
	}

public void paint(Graphics g)
	{pfeillinks(g, getSize().width/2-80,getSize().height-56);
		pfeilrechts(g, getSize().width/2+10,getSize().height-56);
	}

Und in den Constructor musste dann noch
Code:
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
einfügen. Vllt hilft Dir das ja
 

dzim

Top Contributor
Danke Newcomer, aber er verwendet nicht AWT/Swing sondern JavaFX. Allerdings sollte der Ansatz ungefähr der gleiche sein, also anschauen lohnt sich! :) Wenn nichts mehr geht: mit Java8 kannst du auch Swing in JavaFx einbetten... :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
B AWT Rechteck abnehmen lassen AWT, Swing, JavaFX & SWT 9
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
E Button verschwindet nachdem ein Rechteck gezeichnet wurde AWT, Swing, JavaFX & SWT 5
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
L Swing Ein Rechteck in ein Grid Zeichnen AWT, Swing, JavaFX & SWT 5
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
F 2D-Grafik Gestricheltes Rechteck AWT, Swing, JavaFX & SWT 1
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
S Warum wird dieses Rechteck nicht korrekt gemalt? AWT, Swing, JavaFX & SWT 7
S "Quadrat oder Rechteck" - Check AWT, Swing, JavaFX & SWT 3
C Rechteck drehen AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Rechteck befindet sich unter dem Rahmen des JFrame. AWT, Swing, JavaFX & SWT 1
B Rechteck Mit Hilfe Von Timeline, KeyFrames animieren AWT, Swing, JavaFX & SWT 3
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
J SWT Rechteck Füllfarbe wird bei Action falsch gefüll AWT, Swing, JavaFX & SWT 2
H Rechteck via Mouse bewegen AWT, Swing, JavaFX & SWT 2
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
C Auto fahren - Rechteck JFrame AWT, Swing, JavaFX & SWT 6
E Swing Rechteck und Kreise verschieben AWT, Swing, JavaFX & SWT 3
G Swing Rechteck uebermalen AWT, Swing, JavaFX & SWT 10
M Rechteck "umdrehen"/über die Kante drehen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Rechteck mit dickerem Rand zeichnen AWT, Swing, JavaFX & SWT 8
H Rechteck grafisch ausgeben (2D) AWT, Swing, JavaFX & SWT 3
G Rechteck mit Farbverlauf AWT, Swing, JavaFX & SWT 5
E Rechteck in JPanel Zeichnen AWT, Swing, JavaFX & SWT 6
G Rechteck zeichnen + "special features" :-) AWT, Swing, JavaFX & SWT 16
A Java Button mal nicht nur als rechteck AWT, Swing, JavaFX & SWT 16
B awt rechteck zeichnen AWT, Swing, JavaFX & SWT 3
R Rechteck drehen! AWT, Swing, JavaFX & SWT 4
K Problem mit JLabel, Rechteck, repaint() ;) AWT, Swing, JavaFX & SWT 2
J Auf Button - Druck soll Rechteck Farbe verändern AWT, Swing, JavaFX & SWT 8
M Rechteck zeichnen AWT, Swing, JavaFX & SWT 4
TheJavaKid Kreis, Rechteck, Linie. verschieben AWT, Swing, JavaFX & SWT 5
S Rechteck per Mouse aufziehen AWT, Swing, JavaFX & SWT 7
A Dreidimensionales Rechteck AWT, Swing, JavaFX & SWT 3
C Schräges Rechteck in Swing? AWT, Swing, JavaFX & SWT 7
G Rechteck normalisieren AWT, Swing, JavaFX & SWT 2
P Rechteck "verkehrt" herum zeichnen AWT, Swing, JavaFX & SWT 2
G Probleme mit Mauslistener AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben