mouseClicked JLabel Array mitteilen

banax

Mitglied
Hallo,

ich bin so ein bisschen am verzweifeln. Ich erstelle auf meinem JFrame mehrere JLabels als Array in einer Schleife. Nun möchte ich, dass das JLabel was ich anklicke, seinen Text ändert. Also bekommt jedes JLabel einen Mouseadapter. Wie sage ich dem Mouseadapter jetzt am besten, welches JLabel den Text ändern soll?

Hier mal mein Beispiel. In dem wird leider nur das letzte JLabel beim Klicken geändert.

Java:
import java.awt.Color;
import java.util.Random;
import javax.swing.*;
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;


public class Start extends JFrame implements ActionListener{
	
	private JButton btnRunter;
	public Balken[] balkens = new Balken[100];
	private int balkenindex;
	
	public Start(){
		setSize(500,500);
		setLayout(null);
		
		Random zufall = new Random();
		int posX = 0;
		int posY = 0;
		for (int i = 0; i < 10; i++){
			Color farbe = new Color(zufall.nextInt(255),zufall.nextInt(255),zufall.nextInt(255));	
			balkens[i] = new Balken();
			balkens[i].setBackground(farbe);
			balkens[i].setOpaque(true);
			balkens[i].setBounds(posX, posY, 200, 20);
			balkens[i].setText(String.valueOf(i));
			balkens[i].setName(String.valueOf(i));
			balkenindex = i;
			balkens[i].addMouseListener(new MouseL());
			balkens[i].addMouseListener(new MouseAdapter()
		     {
		         public void mouseClicked(MouseEvent e)
		         {
		             // TODO Auto-generated method stub
		        	 
		        	 balkens[balkenindex].setText("Neuer Text");
		         }
		     });
			add(balkens[i]);
			posY += 20;
		}
		
		btnRunter = new JButton();
		btnRunter.setBounds(200,0,200,20);
		btnRunter.addActionListener(this); 
        
        add(btnRunter); 
		
		
	}
	
	public static void main(final String args[]) {new Start().setVisible(true);}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource() == btnRunter){ 
            balkens[2].setText("neuer Text"); 
        } 
	}


}

class Balken extends JLabel{ 
	
}

Soviel dazu.
Später möchte ich meine MosueEvents noch in eine extra .java auslagern. Aber da weiß ich dann noch weniger, wie ich jedem JLabel sein ClickEvent vermitteln kann. Da ich in der extra Klasse die balkens nicht ansprechen kann. Auch nicht wenn diese public sind. Ich glaube ich muss die Werte irgendwie kompliziert übergeben oder? Dazu auch ein kleines Beispiel. Aber mit einer Lösung für das obere wäre ich erstmal zufrieden.

Java:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MouseL implements MouseListener {

	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("test");
		
	}

	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
}


Vielen Dank und
schöne Grüße
 

Kevin94

Top Contributor
Du kannst anhand des übergebenen MouseEvents ermitteln, auf welches Label sich der Methodenaufruf bezieht.
Code:
getComponent()
liefert dir die Component, auf der das Event aufgetreten ist, du musst die Rückgabe dann noch auf JLabel casten.
 
G

Gast2

Gast
Java:
 public void mouseExited(MouseEvent arg0) {

arg0 ist das Label, welches den Listener anspricht, d.h. du kannst z.B.
Code:
arg0.setText("");
machen. (Kannst auch statt arg0 einen selbstgewählten Variablennamen nehmen)
 

Kevin94

Top Contributor
Nein, der übergebene Parameter ist nicht das JLabel. Fällt dir an der Klasse von
Code:
arg0
etwas auf? MouseEvent, das wiederspricht ziemlich einem JLabel. Da haggelt es sogar wenn man casten würde einen Kompiler Error. Wenn dann schon:
Code:
((JLabel)arg0.getComponent()).setText("was auch immer")
 

banax

Mitglied
Danke. letzteren funktioniert, auch wenn ich den Code noch nicht verstehe. In meinem Beispiel
Java:
((Balken)arg0.getComponent()).setText("was auch immer");
Aber da komme ich noch drauf. Danke
 

banax

Mitglied
Jetzt habe ich mir gedacht, ich spreche mal alle JLabels an und habe das zum Testen gemacht. Passiert nur nichts.

Java:
	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("test");
		((Balken)arg0.getComponent()).setText("was auch immer");
		Start myStart = new Start();
		myStart.changeBalken();
	}

Java:
	public void changeBalken() {
		balkens[4].setText("Balken Nummer 4");
	}

Innerhalb der selben Klasse funktioniert es mit:
Java:
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource() == btnRunter){ 
            balkens[2].setText("neuer Text"); 
            changeBalken();
        } 
	}


Also Mousepressed soll eine Methode in der anderen Klasse ausführen. Um es mal auf den Punkt zu bringen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Klassen mouseClicked wird nicht aufgerufen, während man die Maus bewegt Java Basics - Anfänger-Themen 4
J Methode mouseClicked mit zu übergebenden Parametern Java Basics - Anfänger-Themen 1
hdi JPanel mouseClicked() Methode reagiert nur zu 50% Java Basics - Anfänger-Themen 4
hdi JPanel mouseClicked() Methode reagiert nur zu 50% Java Basics - Anfänger-Themen 6
I Methode mouseClicked() aufrufen Java Basics - Anfänger-Themen 9
X Probleme mit mouseClicked() Java Basics - Anfänger-Themen 3
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
JUNSKI Zeilenumbruch JLabel Java Basics - Anfänger-Themen 1
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
Tom/S JLabel Icon Farbe Java Basics - Anfänger-Themen 2
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
S Kontrollieren, ob ein Jlabel nicht sichtbar ist Java Basics - Anfänger-Themen 6
S Input/Output JLabel verschieben Java Basics - Anfänger-Themen 7
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
CptK Interface JLabel bewegt sich nicht sondern teleportiert sich... Java Basics - Anfänger-Themen 3
CptK Methoden JLabel erstellen & verschieben Java Basics - Anfänger-Themen 1
T JLabel hat falsche größe Java Basics - Anfänger-Themen 1
A JLabel mit button drücken verändern Java Basics - Anfänger-Themen 6
CptK JLabel im Array Java Basics - Anfänger-Themen 2
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
D Methoden JButton und JLabel in einer Methode erstellen Java Basics - Anfänger-Themen 5
P Auf JLabel zugreifen Java Basics - Anfänger-Themen 12
P Erste Schritte JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 4
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Vererbung Ein JLabel einer Elternklasse anzeigen Java Basics - Anfänger-Themen 8
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
J Array in JLabel ausgeben Java Basics - Anfänger-Themen 2
S Variablen JLabel backImagePanel Fehlermeldung Java Basics - Anfänger-Themen 3
snipesss [Java] Schriftart und Schriftgröße von JLabel in einer Zeile festlegen? Java Basics - Anfänger-Themen 3
J JLabel cannot be resolved Java Basics - Anfänger-Themen 8
S JLabel sichtbar machen/GUI Java Basics - Anfänger-Themen 3
WetWer Animation JLabel Java Basics - Anfänger-Themen 2
W aus Methode auf JLabel zugreifen und Image verändern Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
L Variable für JLabel wird nicht erzeugt Java Basics - Anfänger-Themen 6
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
T Objekt in ein JLabel der GUI übergeben Java Basics - Anfänger-Themen 3
S JLabel an Methode übergeben Java Basics - Anfänger-Themen 2
D Ausgabe über JLabel Java Basics - Anfänger-Themen 12
M Erste Schritte Wie speichert und gibt man Arrays aus? (JLabel) Java Basics - Anfänger-Themen 12
M Fangspiel-Probleme (JLabel, Objekt zurücksetzen) Java Basics - Anfänger-Themen 3
C Rechenaufgabe im JLabel ausrechnen Java Basics - Anfänger-Themen 2
J JLabel Icon neu zeichnen Java Basics - Anfänger-Themen 2
Z JLabel Icon ändern Java Basics - Anfänger-Themen 2
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
D JLabel ändern in actionperformed Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
G drawString/ JLabel updaten Java Basics - Anfänger-Themen 1
G mouseDragged auf Jlabel Java Basics - Anfänger-Themen 2
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
M Frage zu JLabel Java Basics - Anfänger-Themen 5
T JLabel-Bilderpfad ändern... Java Basics - Anfänger-Themen 2
T JLabel anzeigen lassen... Java Basics - Anfänger-Themen 6
T Mein String in ein JLabel stecken Java Basics - Anfänger-Themen 2
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
T JLabel zum klicken... Java Basics - Anfänger-Themen 15
W Datentypen String-Ausgabe in jLabel Java Basics - Anfänger-Themen 14
J JLabel Ausgabe Java Basics - Anfänger-Themen 3
L JLabel Icon Größe anpassen Java Basics - Anfänger-Themen 11
A Zeilenumbruch im Jlabel Java Basics - Anfänger-Themen 11
3 JLabel - Text in mehreren Zeilen zentrieren Java Basics - Anfänger-Themen 5
R JLabel imageicon jede Sekunde wechseln Java Basics - Anfänger-Themen 3
G GUI JLabel ersetzen Java Basics - Anfänger-Themen 3
M Zeilenumbruch in JLabel Java Basics - Anfänger-Themen 51
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
S Text in einem JLabel nur zum Teil Fett Java Basics - Anfänger-Themen 2
B JLabel Text Formatierung Java Basics - Anfänger-Themen 5
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
S NullPointerException bei zweidimensionalem JLabel-Array Java Basics - Anfänger-Themen 4
T JLabel richtig anordnen? wie gehts? Java Basics - Anfänger-Themen 9
L GridLayout mit JLabel-Array füllen Java Basics - Anfänger-Themen 12
SexyPenny90 JLabel Text und Icon untereinander verwenden Java Basics - Anfänger-Themen 3
B JLabel löschen/überschreiben Java Basics - Anfänger-Themen 10
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
A JLabel erst auf null dann auf einen Wert setzen Java Basics - Anfänger-Themen 7
F JLabel-Background Java Basics - Anfänger-Themen 7
T JLabel Farbe ändern, Problem Java Basics - Anfänger-Themen 2
T JLabel mit Text und Bild Java Basics - Anfänger-Themen 3
C JLabel markieren Java Basics - Anfänger-Themen 2
M BeanBinding Jlist an Jlabel Java Basics - Anfänger-Themen 2
M OOP JLabel werden nicht korrekt eingefärbt Java Basics - Anfänger-Themen 6
P JLabel prüfen,... Java Basics - Anfänger-Themen 6
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
P JLabel auf JFrame - Schrift vergrößern Java Basics - Anfänger-Themen 2
Z Fonts in einem JLabel Java Basics - Anfänger-Themen 7
MonsterBit setText bei JLabel Java Basics - Anfänger-Themen 16
K Zufällige Auswahl innerhalb eines Arrays und Arrays aus JLabel füllen Java Basics - Anfänger-Themen 32
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
M JLabel attribut wert zuweisen Java Basics - Anfänger-Themen 2
E JLabel deaktivieren ohne Veränderung der Darstellung Java Basics - Anfänger-Themen 2
0 Icon in JLabel Java Basics - Anfänger-Themen 6
JAVAnnik variable erhöhen bei Klick auf JLabel Java Basics - Anfänger-Themen 3
T JLabel wird nicht gesetzt in Schleife Java Basics - Anfänger-Themen 9
T aus stateChanged ein JLabel adden Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben