Buttons mit MouseOver

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich habe einen zweigeteilten Frame. Oben ist ein Panel mit zehn Buttons. Ich habe ein Button-Array erzeugt und erzeuge diese Buttons über eine Schleife

Code:
    private JButton[] buttons = new JButton[ 10 ];
    private String[] buttontexte;
    //...
    for( int i = 0; i < buttontexte.length; i++ )
        {
            buttons[ i ] = new JButton( buttontexte[ i ] );
            form.add( buttons[ i ] );
        }

In dem unteren Panel ist ein Label. Je nachdem, über welchen Button die Maus fährt, soll im unteren Panel ein anderer Text erscheinen (z. B. der Buttontext).

Wie kriege ich das hin? (Bitte Codebeispiele)
 

@x.l

Bekanntes Mitglied
Du musst nen MouseListener mit an den Button anhängen und in der Methode mouseEntered deine gewünschte Aktion durchführen.
 
G

Guest

Gast
Danke! Aber ein Anfänger braucht schon konkrete Beispiele ...
 

hdi

Top Contributor
Jedes Objekt der Klasse JComponent (und damit auch JButton, weil das eine Unterklasse davon ist) hat die Methode:

Code:
addMouseListener(MouseListener)

MouseListener ist ein Interface, wenn du nicht weisst was ein Interface ist, google mal danach.
Das mit den Listenern (Interfaces im Allgemeinen) ist zugegeben nicht das leichteste in Java, weil die Benutzung
z.T. doch recht unintuitiv ist.

Die obige Methode verlangt also so ein Interface "MouseListener".

Es gibt 2 Wege so einen MouseListener zu erstellen: einen etwas umständlicheren, und einen etwas schwer
nachvollziehbaren ;) Der umständlichere ist der leichtere für einen Anfänger, musst halt n bisschen mehr schreiben.

Du machst dir eine Klasse, die das MouseListener Interface implementiert, und in dieser Klasse musst du dann alle
Methoden des Interfaces überschreiben.

Code:
public class MyListener implements MouseListener{

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

	@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
		
	}

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

}

Jetzt suchst du dir die Methode raus, die du benutzen willst, das wäre also mouseEntered(), und schreibst
dort den Code rein, der ausgeführt werden soll, wenn man dieses Event auslöst. Da willst du jetzt
einen für den Button spezifischen Text ausgeben. Das heisst du gibst dieser Klasse so ein Attribut:

Code:
private String text;

und einen Konstruktor:

Code:
public MyListener(String text){
      this.text = text;
}

Jetz kannste zB in der mouseEntered Methode diesen Text auf der Konsole ausgeben, oder eben
auf einem Label. In letzterem Fall muss diese Klasse dieses Label natürlich irgendwie kennen, d.h.
du könntest es auch mit im Konstruktor übergeben.

Jetzt haste deinen Listener, den hängste dann an einen button:

Code:
button.addMouseListener (new MyListener("Mein Text"));

Wenn jetz die Maus in diese Button reingeht, wird automatisch die mouseEntered() Methode aufgerufen
von dem Listener, den du ihm gegeben hast. Java weiss schon selber, wann es welches Event feuern soll,
also du braucsht dich da nich drum zu kümmern, es wird funktionieren.

Jetzt noch die schnellere Variante:

Code:
final String myText = "Hallo, das ist mein Text";
b.addMouseListener(new MouseListener() {

			@Override
			public void mouseEntered(MouseEvent e) {
				deinLabel.setText(myText);
			}
                        // die anderen Mouse-Methoden
		});

Das ist halt ein etwas komisches Konstrukt, kann man halt so machen quasi on-the-fly. Der Unterschied
jetzt ist, dass dein Label sowie auch "myText" als "final" deklariert sein müssen. Das ist der Nachteil dieser
schnellen Variante.

Wichtig ist, dass du das auch wirklich verstehst. Wenn irgendwas unklar ist, frag lieber nochmal nach, statt
dass du den Code jetzt einfach kopierst und verwendest, ohne ihn zu verstehen.
 
G

Guest

Gast
Prima, danke!

Was ich noch nicht hinkriege: Wie kann ich den MouseListener am besten in der Schleife wie in meinem Beispielcode hineinschreiben, so dass er auf den entsprechenden Button reagiert beim Hovern, und wie frage ich dann ab, über welchem Button gerade die Maus ist? Gut wäre es noch, wenn der Index des Buttons zurückgegeben wird.
 

hdi

Top Contributor
Also über welchem Button die Maus ist, musst du nicht abfragen, das weiss Java selber. Das ist
ja gerade das Konzept von Listenern : Sie lauschen automatisch permanent, was passiert, und wenn
deine Maus in den Button reinkommt, bemerkt java das und führt die mouseEntered() Methode aus.
Die rufst du nicht selber auf!

Und du kannst doch jedem Button deinen Listener geben in einer Schleife, wo ist das Problem?

Und mein Beispiel (egal welche Version) macht dir nen Listener, der einen Text ausgibt. Wenn du nun
den Index ausgeben willst, benutzt du halt statt einem Text den Index in der mouseEntered() Methode.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
A Aktualisierung eines Buttons Java Basics - Anfänger-Themen 18
S Runde Buttons erstellen Java Basics - Anfänger-Themen 10
J Input/Output Input Buttons Html mit JSP Java Basics - Anfänger-Themen 3
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
T Buttons... Java Basics - Anfänger-Themen 1
U Javafx Array aus Buttons Java Basics - Anfänger-Themen 2
L Buttons außerhalb der sichtbaren Activity Java Basics - Anfänger-Themen 8
E Hilfe bei Buttons (GUI) Java Basics - Anfänger-Themen 3
D Mit Buttonklick Farbe der anderen Buttons verändern? Java Basics - Anfänger-Themen 2
L Buttons ansprechen Java Basics - Anfänger-Themen 1
F Mehrfaches Clicken eines Buttons Java Basics - Anfänger-Themen 1
H Buttons zeigen keine Reaktion Java Basics - Anfänger-Themen 6
E Wenn i (for-Loop) bestimmter Wert, dann neue Zeile eines Buttons Java Basics - Anfänger-Themen 7
H Java Buttons ausblenden bei inaktivität Java Basics - Anfänger-Themen 1
A Nach Druck eines Buttons reagieren andere Button nicht Java Basics - Anfänger-Themen 3
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
D Variable Anzahl an Buttons per Schleife Java Basics - Anfänger-Themen 7
U Best Practice Buttons sollen ÜBER Labeln liegen, also quasi im Vordergrund. WIE? Java Basics - Anfänger-Themen 4
TheSorm Anzeige fehler eines Buttons Java Basics - Anfänger-Themen 3
M Icons auf Buttons Java Basics - Anfänger-Themen 9
S Variablen Variable bei drücken eines Buttons ändern Java Basics - Anfänger-Themen 1
M Buttons funktionieren nicht Java Basics - Anfänger-Themen 4
lord239123 Buttons werden nicht angezeigt Java Basics - Anfänger-Themen 3
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
M Größe eines Buttons festlegen Java Basics - Anfänger-Themen 4
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
J Aktivierung eines Buttons nach Eingabe in Textfeldern (DocumentListener) Java Basics - Anfänger-Themen 4
O Position des Buttons wird nicht geändert.. Java Basics - Anfänger-Themen 6
K Erste Schritte GUI - Hintergrundbild und darauf Buttons Java Basics - Anfänger-Themen 2
J BlueJ canvas Buttons adden? Java Basics - Anfänger-Themen 2
U Methoden Methode zur Erstellung von Buttons Java Basics - Anfänger-Themen 11
H Icons in Buttons resizable? Java Basics - Anfänger-Themen 3
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
L OOP Buttons mit Pfeilen miteinander verbinden Java Basics - Anfänger-Themen 5
A Dropdown Liste - mit je zwei Verlinkungen und zwei ausführende Buttons Java Basics - Anfänger-Themen 3
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
S Hilfe bei Buttons Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
B Die Hintergrundfarbe eines deaktivierten buttons ändern? Java Basics - Anfänger-Themen 4
SheldoN Töne abspielen auf verschiedenen Buttons Java Basics - Anfänger-Themen 17
J durch drücken eines buttons text in einer textdatei speichern Java Basics - Anfänger-Themen 2
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
Fab1 Buttons auf ein Hintergrundbild(JFrame) setzen Java Basics - Anfänger-Themen 24
H Methode aufrufen beim Drücken eines Buttons im Boxlayout Java Basics - Anfänger-Themen 6
M Tabelle mit Buttons Java Basics - Anfänger-Themen 24
M Variablen via actionPerformed mit Buttons ändern Java Basics - Anfänger-Themen 7
K Durch ändern eines Buttons String füllen Java Basics - Anfänger-Themen 14
J Buttons Java Basics - Anfänger-Themen 19
G Buttons in ein Array umformen Java Basics - Anfänger-Themen 11
S Buttons übereinander legen - Reihenfolge Java Basics - Anfänger-Themen 2
M Buttons erscheinen erst bei Mouse-Over Java Basics - Anfänger-Themen 8
B Buttons Java Basics - Anfänger-Themen 9
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
1 Menü mit Buttons erstellen Java Basics - Anfänger-Themen 10
M Durchsichtige Buttons Java Basics - Anfänger-Themen 12
P OnClickListener für mehrere Buttons Java Basics - Anfänger-Themen 5
U Buttons einfügen (Leiste verschwunden!?) Java Basics - Anfänger-Themen 2
M Gui - Probleme mit Buttons Java Basics - Anfänger-Themen 4
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
E Android: OnClickListener erkennt Buttons nicht Java Basics - Anfänger-Themen 7
E Buttons in Android generieren? Java Basics - Anfänger-Themen 4
D Link over Buttons Java Basics - Anfänger-Themen 4
B Identifikation eines einzelnen Buttons aus mehreren Buttons per Schleife erzeugten Java Basics - Anfänger-Themen 4
Nicer Radio Buttons Gruppe Java Basics - Anfänger-Themen 2
G getControlPanelComponent JMF Buttons verstecken? Java Basics - Anfänger-Themen 7
K Buttons Funktionieren Nicht!!! Java Basics - Anfänger-Themen 8
manunana89 2 ActionListener auf 2 Buttons??? Java Basics - Anfänger-Themen 6
Mike90 verschieben von Buttons, ... Java Basics - Anfänger-Themen 18
F Buttons und Aktionen Java Basics - Anfänger-Themen 20
M dynamisches Clipboard mit Buttons Java Basics - Anfänger-Themen 5
H Buttons um sprache zu ändern. Java Basics - Anfänger-Themen 6
B Calculator - Buttons zusammenfassen Java Basics - Anfänger-Themen 8
0 Buttons mit Absatz Java Basics - Anfänger-Themen 6
B Buttons erstellen! Wie? Java Basics - Anfänger-Themen 2
D Buttons-die Wahrheit über sie Java Basics - Anfänger-Themen 11
M "Selbst erstellte" Buttons nicht sichtbar. Java Basics - Anfänger-Themen 20
Mörmel Variable Anzahl von Buttons erzeugen Java Basics - Anfänger-Themen 6
K Fenster mit Buttons hin und her schieben ? Java Basics - Anfänger-Themen 23
A in jTextField mit Hilfe von Buttons schreiben Java Basics - Anfänger-Themen 2
J Buttons Java Basics - Anfänger-Themen 3
M Buttons auf allen Masken Java Basics - Anfänger-Themen 4
G Alle Buttons in einer For Schleife ändern Java Basics - Anfänger-Themen 5
G Nicht benannte Buttons - Wenn gedrückt > Action Java Basics - Anfänger-Themen 24
T Buttons Resetten Java Basics - Anfänger-Themen 2
G Grafische Oberfläche mit Buttons und Actionlistener? Java Basics - Anfänger-Themen 27
D Buttons gehen trotz enebled(false) Java Basics - Anfänger-Themen 8
P Buttons Java Basics - Anfänger-Themen 6
G Panels und Buttons Java Basics - Anfänger-Themen 5
P Eigenschaften eines Buttons ändern Java Basics - Anfänger-Themen 6
M Buttons Java Basics - Anfänger-Themen 7
N Größe von Buttons Java Basics - Anfänger-Themen 3
D MouseLister und Identifikation des Event - Buttons Java Basics - Anfänger-Themen 4
T ActionListener zu Buttons dynamisch zuordnen Java Basics - Anfänger-Themen 10
F 2 Buttons Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben