Event Handling MouseListener funktioniert seit Java 8 nicht mehr

dave77

Mitglied
Hallo zusammen,
ich habe eine Frage an euch.
Vor Jahren hatte ich eine Anwendung programmiert, die einen MouseListener verwendet, um Objekte, die angeklickt werden, verschiebbar zu machen.
Jetzt habe ich seit Java 8 das Problem, dass die Objekte der Maus auf einmal nicht mehr folgen, sondern nur um ein paar Pixel springen.
Hat jemand von euch schon so ein Problem gehabt? Und noch wichtiger, kann mir jemand sagen, was ich ändern muss, damit sich die Objekte wieder verschieben lassen?
Vielen lieben Dank!
 
Hallo knilch,
ich kann hier zwar ein CodeFragment posten:
Java:
class MyMouseListener implements MouseListener{
	
	Zimmer z;
	public MyMouseListener(Zimmer z1){
		z=z1;
	}
	public void mouseClicked(MouseEvent e){
		z.repaint();
	}
allerdings weiss ich eben nicht, ob es genau am MouseListener liegt oder nicht.
Ich habe eben damit gerechnet, dass es mehreren so geht, dass seit JAVA 8 der MouseListener nicht mehr tut oder anders tut...
 
Zuletzt bearbeitet von einem Moderator:
Ich hatte bedenken, die ganze .java Datei hier zu posten, da ich es niemandem antun wollte, sich durcharbeiten zu müssen. Aber da ich selber nicht weiterkomme und vielleicht jemand, der erfahren ist, das Problem schnell identifizieren kann, werde ich die Datei hier posten und hoffe, dass sich jemand damit auskennt:
http://www.musikklo.de/test/Zimmer.java
Vielen Dank im Voraus!
 
Hast du schon die Antwort von Gucky beachtet?
Dein MouseListener reagiert auf einen Klick und lässt dann das "Zimmer z" neu zeichnen. Fertig, mehr soll dein Code nicht machen.
Also ich sehe nirgends eine Zeile Code welche dafür sorgen soll das du mit der Maus etwas "bewegen" lassen kannst.

[ot]
Bitte beschäftige dich nochmals mit den Grundlagen der OOP.
Zum Beispiel in der Methode "paintEinzelpersonen_zu" hast du mehere if Bedingungen welche sich bis auf 1-2 Werte gleich sind -> das schreit förmlich nach einer eigenen Methode!

Ansonsten zum Code generell:
Das es Leute gibt die Enlisch und Deutsch gibt, ja ok. Aber "_" sollte in Variablennamen bzw. Methodennamen vermieden werden. Verwende einfach konsequent lowerCamelCase.
Die Klasse Vector sollte man nicht mehr benutzen, stattdessen ArrayList. Ansonsten verwendest du soviele Vectoren und Arrays das ich glaube mit extra Klassen wäre das wahrscheinlich einfacher abzubilden.
Vermeide einzeilige ifs! Auch wenn du ein geübter Programmierer bist bzw die IDE es farblich anzeigt: Der Code wird lesbarer.
Kontrolliere deine Methode "getTheOtherPoints": R/L bzw. O/U machen jeweils das selbe. Ansonsten definierst du das Array befüllst es und änderst jeden Wert wieder (wobei immer 4 Werte gleich bleiben -> diese Zeilen sind unnötig)
[/ot]
 
Zuletzt bearbeitet:
Ich habe die Stelle gefunden, die Probleme bereitet. Es handelt sich um die MouseDragged Funktion, die seit Java 8 bei mir nicht mehr richtig funktioniert.
Habe meine Funktion geändert und die Koordinaten in MouseReleased() reingeschrieben. Jetzt bewegen sich die Objekte zwar nicht mehr, aber sie enden da, wo man die Maus loslässt.
 
Zuletzt bearbeitet:
Eine andere Frage. Seit Java8 habe ich ausserdem Probleme mit meinem JTextField bzw. JTableModel. Es werden nicht immer alle Elemente angezeigt, bzw. verschwinden beim Verschieben des Fensters. Wenn ich in einer Tabelle eine Zelle editiere, dann sehe ich die Zahl erst dann, wenn ich wieder enter gedrückt habe.
Woran könnte das liegen?
 
Zuletzt bearbeitet:
Vielleicht hilft dir getPoint() und das du dann die Koordinaten über den Punkt bekommst?
Es kann natürlich sein, dass du über einen Bug gestolpert bist aber das glaube ich eher weniger.

Google doch mal, ob noch Andere dasselbe Problem haben.

Das ist klar, weil mouseReleased Maus losgelassen bedeutet.

PS: Warum hast du den Code wegeditiert?
 
Zuletzt bearbeitet:
Entschuldigung, wusste nicht, dass es hier so schnell geht 🙂
Hier der ursprüngliche Code:

Java:
public void mouseDragged(MouseEvent e){
parentZimmer.moveTisch(tischName, x_coord+e.getX(), y_coord+e.getY());
parentZimmer.repaint();	
}
 
Zuletzt bearbeitet von einem Moderator:
Dein Schrägstrich ist falschrum 😀
Es muss ein Frontslash(/) und kein Backslash(\) sein 😀

Wie gesagt:
Vielleicht hilft dir getPoint() und das du dann die Koordinaten über den Punkt bekommst?
Es kann natürlich sein, dass du über einen Bug gestolpert bist aber das glaube ich eher weniger.

Google doch mal, ob noch Andere dasselbe Problem haben.
 

Zurück
Oben