MouseListener für ein eingefügtes Bild in einem JFrame

hsw

Mitglied
hallo java-forum!

ich habe in meinem jframe in bild eingefügt. das hat alles super funktioniert.
jetzt möchte ich, wenn ich NUR auf das bild klicke, dass sich die hintergrundfarbe vom frame ändert.
wenn ich momentan irgendwo im frame zweimal klicke, ändert sich die hintergrundfarbe.. ???:L

ich hoffe auf hilfreiche antworten! :)


MAIN:
Java:
package zzzz;

import javax.swing.JFrame;

public class Main
{
		public static void main(String[] args)
		{
			JFrame frame= new JFrame();
			frame.setSize(500,500);
						
			Bild bild=new Bild();
			bild.addMouseListener(new MouseHandler(frame));
			
			frame.add(bild);
				
			frame.setVisible(true);	
		}	
}

klasse zum bild einfügen:
Java:
package zzzz;

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Bild extends JPanel
{
	
	public void paintComponent(Graphics g)
	{
		Image bild=new ImageIcon("asdf.jpg").getImage();
		g.drawImage(bild,4,4,this);
				
		
		
	}
	
}

klasse mousehandler:
Java:
package zzzz;

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

public class MouseHandler implements MouseMotionListener,  MouseListener
{
	
	private JFrame frame;
	
	public MouseHandler(JFrame asdf)
	{
	           frame=asdf;
	}
	
		
	@Override
	public void mouseClicked(MouseEvent event)
	{
		frame.setBackground(Color.cyan);
	}
}
 

Michael...

Top Contributor
Grundsätzlich ist es eine schlechte Idee in der paintComponent des Bildpanels jedesmal das Bild neu zu laden. Ausser es ändert sich andauernd und selbst dann sollte man es nicht in der Methode laden.
Man könnte z.B. im Bildpanel eine zusätzliche Methode implementieren, welche die Position des MouseEvents mit der Position des Bildes und dessen Ausdehnung vergleicht und dementsprechen true oder false zurück gibt.
 
N

nillehammer

Gast
Ich vermute, dass das Bild-Panel größer ist, als von Dir gedacht und es deswegen die Klick-Events empfängt, die es eigentlich nicht mehr empfangen sollte. Mach mal die Hintergrundfarbe deines Bild-Panels testweise anders als die vom JFRame, dann siehst Du es.
 

hsw

Mitglied
Ich vermute, dass das Bild-Panel größer ist, als von Dir gedacht und es deswegen die Klick-Events empfängt, die es eigentlich nicht mehr empfangen sollte. Mach mal die Hintergrundfarbe deines Bild-Panels testweise anders als die vom JFRame, dann siehst Du es.

ok! kannst du mir bitte sagen, wie ich die hintergrundfarbe vom bild-panel ändern kann?
 

Michael...

Top Contributor
setBackground(Color....)
Falls es Dir nicht bewusst ist, das JPanel mit dem MouseListener nimmt den gesamten Platz ein.

Ausserdem solltest Du in der überschriebenen paintComponent zuerst
Code:
super.paintComponent(g)
aufrufen.
 

hsw

Mitglied
mir sind die funktionen vom jpanel noch nicht ganz klar. habe vorher immer nur mit awt-frames gearbeitet.
also kann mein code nicht funktionieren, weil das jpanel vom bild über den ganzen frame geht?

welche alternativen befehle für bilder kann ich nutzen, damit das funktioniert?
 

sung

Mitglied
int mouseX = (int)event.getPoint().getX();
int mouseY =(int) event.getPoint().getY();

then check, ob (mouseX , mouseY) in dem bild ist.
 

Michael...

Top Contributor
welche alternativen befehle für bilder kann ich nutzen, damit das funktioniert?
Wenn Du mit Bildern arbeitest, bleibt Dir fast nichts anderes übrig als die Mausposition manuell mit der der Position des Bildes zu vergleichen. Ausser Du sorgst dafür, dass das JPanel genauso groß wie das Bild ist, was sich je nach LayoutManager nicht unbedingt einfach und möglich ist.
Ersteres ist ja nur ein simpler Vergleich von Koordinaten z.B. xBild <= xMaus <= xBild +breiteBild und yBild...
Man könnte sich Position und Ausdehnung aus als Rectangle speichern, Rectangle bietet die Methode contains(Point)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
H MouseListener klicks begrenzen Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
V Problem - MouseListener/2DGraphics Java Basics - Anfänger-Themen 2
R Variablen MouseListener funktioniert auf anderen Pcs nur bedingt Java Basics - Anfänger-Themen 6
G MouseListener funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
R Variable Klassenübegreifend MouseListener Java Basics - Anfänger-Themen 0
D MouseListener funktioniert nach Timerstart nicht mehr Java Basics - Anfänger-Themen 9
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
S GUI ImageIcon Mouselistener Link Java Basics - Anfänger-Themen 0
P MouseListener funktioniert nicht Java Basics - Anfänger-Themen 6
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Problem mit MouseListener Java Basics - Anfänger-Themen 4
T MouseListener, recht Taste Java Basics - Anfänger-Themen 2
M MouseListener funktioniert nicht Java Basics - Anfänger-Themen 9
E Mouselistener auf jTable Java Basics - Anfänger-Themen 18
B Variablen an MouseListener übergeben Java Basics - Anfänger-Themen 5
H Mouselistener bei JTable Java Basics - Anfänger-Themen 4
J MouseListener fuer gezeichnete Polyline Java Basics - Anfänger-Themen 3
L Label + MouseListener Java Basics - Anfänger-Themen 12
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
M MouseListener Java Basics - Anfänger-Themen 2
kitz MouseListener Java Basics - Anfänger-Themen 8
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
D Problem mit Mouselistener und jtable Java Basics - Anfänger-Themen 7
C fragen zu MouseListener Java Basics - Anfänger-Themen 3
M MouseListener funktioniert in jar-file nicht mehr Java Basics - Anfänger-Themen 13
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
S Probleme mit 2 mouselistener Java Basics - Anfänger-Themen 6
A Frage zu MouseListener Java Basics - Anfänger-Themen 2
D Mouselistener Java Basics - Anfänger-Themen 2
A jPanel an MouseListener übergeben? Java Basics - Anfänger-Themen 2
S Swing JEditoPane MouseListener Java Basics - Anfänger-Themen 5
M Mouselistener Java Basics - Anfänger-Themen 4
S MouseListener funzt net. Java Basics - Anfänger-Themen 5
G MouseListener double click? Java Basics - Anfänger-Themen 1
V MouseListener Java Basics - Anfänger-Themen 5
M MouseListener Java Basics - Anfänger-Themen 3
N Mouselistener? Java Basics - Anfänger-Themen 5
T ein MouseListener pro Objekt sinnvoll? Java Basics - Anfänger-Themen 4
F MouseListener - Unhandled IOException Java Basics - Anfänger-Themen 2
U MouseListener Java Basics - Anfänger-Themen 2
L Array von Buttons, jeder soll MouseListener haben Java Basics - Anfänger-Themen 5
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
L MouseListener Problem. Java Basics - Anfänger-Themen 2
S mouselistener Java Basics - Anfänger-Themen 3
N MouseListener Java Basics - Anfänger-Themen 2
J MouseListener implementieren Java Basics - Anfänger-Themen 12
P MouseListener wird anscheinend nicht benutzt Java Basics - Anfänger-Themen 12
N MouseListener - reagiert zu spät Java Basics - Anfänger-Themen 3
D JList - Textzeilen MouseListener zuweisen Java Basics - Anfänger-Themen 4
M prüfen ob mouselistener gesetzt ist. Java Basics - Anfänger-Themen 10
O image und mouseListener Java Basics - Anfänger-Themen 15
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
P Kann keinen MouseListener hinzufügen Java Basics - Anfänger-Themen 3
G MouseListener einbauen - wie? Java Basics - Anfänger-Themen 4
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 2
A csv Reader für Java? Java Basics - Anfänger-Themen 24
S Bitte Ratschläge für Console-MenuFührung... Java Basics - Anfänger-Themen 20
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben