MouseListener funktionert nie

  • Themenstarter Themenstarter aloifolia
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

aloifolia

Gast
Hallo zusammen,

beim Schreiben eines Programms bin ich an das Hindernis der MouseListener-Implementierung gestoßen. Nach langem Googlen und Ausprobieren habe ich versucht, das Problem mal zu reduzieren, um irgendeinen Code Listener-fähig zu bekommen. Doch selbst bei folgendem Beispielcode, bei welchem der Listener-Abschnitt aus dem Internet stammt, wird bei mir kein Event ausgelöst - ist das bei Euch anders?

Code:
package gui;

import javax.swing.*;

import java.awt.event.*;

public class Test{
	public static void main(String args[]) {
		JFrame fenster = new JFrame();
		fenster.setSize(400, 50);
		JButton aJButton = new JButton("Ich bin ein JButton");
		aJButton.addMouseListener( new MouseListener() {
		    public void mousePressed(MouseEvent e) {
		    	System.out.println("press");
			}
		    public void mouseReleased(MouseEvent e) {
		          System.out.println("release");
			}
		    public void mouseClicked(MouseEvent e) {
		          System.out.println("click");
			}
		    public void mouseEntered(MouseEvent e) {
		          System.out.println("enter");
			}
			public void mouseExited(MouseEvent e) {
		          System.out.println("exit");
			}
		}
		);
		fenster.add(aJButton);
		fenster.setVisible(true);
	}
}

Vielen Dank schonmal für die Hilfe!
 
ja,

erscheinend denn andere System.out.println-Ausgaben,
z.B. welche direkt aus dem Konstrutor?

schreibe in jede Methode
System.exit(0);

wenn dann das Fenster zugeht, dann funktioniern zumindest die Events 😉
 
Also das Ganze habe ich jetzt mal auf dem anderen PC ausprobiert (vorher auf einem Ubuntu-Laptop) und siehe da:

es funktioniert einwandfrei! Wie kann das denn bitte sein? Gibt es etwa Eclipse-spezifische Einstellungen, die hinderlich sein können?

An dem nichtfunktionierenden Laptop ist in den Libraries Version 1.5.0 eingetragen, beim Windows-Rechner jre6. Kann es daran liegen?
 
Muß es unbedingt ein MouseListener sein?

Kleines Beispiel mit ActionListener:

Code:
import javax.swing.*;

import java.awt.event.*;

public class Test extends JFrame implements ActionListener{
   
	
	public static void main(String args[]) {
     new Test();
   }
	
	public Test(){
		super("Listener");
		setSize(200,200);
		setLocation(100,100);
		
		JButton b = new JButton("drueck mich");
		b.addActionListener(this);
		add(b);
		
		setVisible(true);
	}

	public void actionPerformed(ActionEvent e) {
		System.out.println(e.getActionCommand());
		
	}
}
 
@aloifolia

für diesen Code sollte die Java-Version egal sein,
bei derartigen Fehlern darf man andererseits gar nix ausschließen 😉

was sinnvolles fällt mir dazu aber nicht ein
 
Nein, es können auch gerne andere Listener sein. Nur das Problem ist, dass z.B. auch WindowListener am Laptop nicht funktionieren - deswegen dürfte da auch ein ActionListener nicht viel weiterhelfen 🙂 ...
 
du solltest unbedingt noch klären, ob nur System.out.println nicht angezeigt wird oder der Listener wirklich nicht geht
(siehe meinen System.exit()-Vorschlag)
 
Also mit System.exit(0) passiert am Laptop genauswenig mit einer System.out.println()-Ausgabe.
Am anderen PC funktioniert natürlich alles tadellos.

Was ich mich weiterhin frage: Wenn ich das Fensterchen minimiere und dann wiederherstelle, ist plötzlich der Inhalt des Fensters verschwunden - also der JButton. Am anderen PC jedoch bleibt er dort, wo er hingehört. Ergibt das nun wieder einen Sinn?
 
Mach mal den die Desktop Effekte aus. Compiz/Beryl/Compiz-Fusion und Java 5 funktionieren nicht zusammen.
 
Grafikeffekte habe ich noch nie aktiviert und gerade mal nachgeschaut: sie waren bereits deaktiviert...

Nach ein bisschen googlen ist mir aufgefallen, dass wohl in letzter Zeit Ubuntu zusammen mit Eclipse gerne mal fehlerhaftes Verhalten produziert - wie man das umgehen kann, ist mir jedoch schleierhaft (am Besten die Distribution wechseln 😉)..
 
Hast du Eclipse aus den repositories verwendet? Solltest du nicht tun. Die Variante ist ziemlich zerstückelt und versucht krampfhaft den GCJ statt SUN Java zu verwenden. Lade dir ein reguläres Eclipse, stell vorher sicher das du sun java 6 installiert hast und das es default ist (java -version) und dann enpacke Eclipse in opt/eclipse oder so.
Dann sollte alles funktionieren.
 
So...endlich funktioniert es.

Deinen Rat, ein anderes Eclipse zu verwenden, habe ich gefolgt - es ist die aktuellste Easyeclipse-Version geworden 🙂. Das normale Eclipse wollte irgendwie nach der eigenständigen Installation nicht starten... So und wieder was dazu gelernt als Linux-Anfänger (das Installieren eines Programms mittels Terminal).

So...und nachdem ich dann auch mal herausgefunden habe, wie man das Standard-Java-Ding (wie man es auch immer nennt) umstellt, ist das auch auf den neuesten Stand gebracht.

Vielen Dank für Eure Hilfe! :applaus:
 
Installation? Welche Installation? Nur entpacken.
Erst ein echtes sun jave installieren:
Code:
sudo apt-get-install sun-java6-jre
sudo update-alternatives --config java
Danach Eclipse installieren:
Code:
sudo mkdir /opt/eclipse/
sudo chown deinUser /opt/eclipse
Dann einfach entpacken und einen Starter auf dem Desktop oder so erstellen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben