Mouse methods

Nico1999

Aktives Mitglied
Java:
public void mouseEntered(MouseEvent e) {
    highlightPossibleMoves();

    }
private void highlightPossibleMoves(){
    for (int i = 0; i < brettGröße; i++) {
        for (int j = 0; j < brettGröße; j++) {
            for (int k = 0; k < possibleMoves(moveanzahl, brett).size(); k++) {
                if (e.getSource() == brett[i][j]) {
                    if (possibleMoves(moveanzahl, brett).get(k).location().x() == i
                            && possibleMoves(moveanzahl, brett).get(k).location().y() == j) {
                        int goalx = possibleMoves(moveanzahl, brett).get(k).goal().x();
                        int goaly = possibleMoves(moveanzahl, brett).get(k).goal().y();
                        brett[goalx][goaly].setBackground(Color.green);
                    }
                    }
                }
            }
        }

}

hi ich versuche gerade eine Gui für ein DamenSpiel zu machen und jetzt möchte ich das wenn wenn die mouseEntered, dass die möglichen Moves von der Stelle aus makiert werden(funktiert), beim mouseClickedEvent möchte ich jetzt, dass dauerhaft die felder markiert werden und wenn man auf ein markiertes Feld draufklickt der Move ausgeführt wird und wenn nicht es wieder die Felder entmarkiert werden
wenn ich allerdings jetzt das hier machee
Code:
public void mouseClicked(MouseEvent e){
highlightPossibleMoves();//gleiche Methode wie oben
}
passiert gar nichts
 
Beste Antwort
Ich könnte mir vorstellen, dass: if (e.getSource() == brett[i][j]) in dem Fall nicht mehr trifft. Möglicherweise ist e.getSource() die Figur und nicht das Feld auf dem Brett. Du kannst das mit dem Debugger oder Logger überprüfen.

Oneixee5

Top Contributor
In mouseEntered/mouseClicked setzt du e (ja es sind deine Variablennamen ...) nicht. Vermutlich wäre es besser du übergibst sowas als Parameter, statt alles irgendwie in der Klasse zu halten.
 

mihe7

Top Contributor
Nein. Es geht um Zeile 9. Wo kommt das e her?

Wenn der Code oben so kompiliert, musst Du e als Instanzvariable in der Klasse deklariert haben. Nur sieht man nicht, wo die gesetzt wird.

Besser wäre es, e nicht als Instanzvariable zu deklarieren sondern an die Methode highlightPossibleMoves() zu übergeben (oder ggf. gleich das Ergebnis von e.getSource() an die Methode zu übergeben) - als Parameter.
 

Nico1999

Aktives Mitglied
Nein. Es geht um Zeile 9. Wo kommt das e her?

Wenn der Code oben so kompiliert, musst Du e als Instanzvariable in der Klasse deklariert haben. Nur sieht man nicht, wo die gesetzt wird.

Besser wäre es, e nicht als Instanzvariable zu deklarieren sondern an die Methode highlightPossibleMoves() zu übergeben (oder ggf. gleich das Ergebnis von e.getSource() an die Methode zu übergeben) - als Parameter.
sry dass das jetzt so undeutlich wurde ich habe das einfach in methode reinkopiert, ob besser zu verstehen zu geben, dass es das selbe ist
also quasi

Java:
public void MouseEntered(MouseEvent e){
    for (int i = 0; i < brettGröße; i++) {
        for (int j = 0; j < brettGröße; j++) {
            for (int k = 0; k < possibleMoves(moveanzahl, brett).size(); k++) {
                if (e.getSource() == brett[i][j]) {
                    if (possibleMoves(moveanzahl, brett).get(k).location().x() == i
                            && possibleMoves(moveanzahl, brett).get(k).location().y() == j) {
                        int goalx = possibleMoves(moveanzahl, brett).get(k).goal().x();
                        int goaly = possibleMoves(moveanzahl, brett).get(k).goal().y();
                        brett[goalx][goaly].setBackground(Color.green);
                    }
                    }
                }
            }
        }
}

sry das ich damit nur missverständnisse erzeugt habe .
wenn ich das selbe was jetzt in mouse entered steht was funktiert in mouse clicked eingebe funktiert es nicht mehr
 

Oneixee5

Top Contributor
Ich könnte mir vorstellen, dass: if (e.getSource() == brett[i][j]) in dem Fall nicht mehr trifft. Möglicherweise ist e.getSource() die Figur und nicht das Feld auf dem Brett. Du kannst das mit dem Debugger oder Logger überprüfen.
 
Beste Antwort

Nico1999

Aktives Mitglied
ja die methode funktiert nur wenn ich den gleich inhalt bei mouse clicked rein schreibe passiert nichts
nochmal die frage
ich schreibe den gleichen Code wie in mouseEntered rein wo es funktiert
in mouseClicked rein da funktiert es nicht warum ?
 

Neumi5694

Top Contributor
Click ist auch nicht immer der passende Event, meistens reagiert man auf MouseReleased. Click ist in Java nämlich äußerst sensibel, wenn sich zwischen ButtonDown und ButtonUp da der Mauszeiger auch nur einen Pixel bewegt oder hält man den Button zu lange gedrückt, dann ist es vorbei mit dem Klick.

Es kann auch sein, dass sich bei dir zwei Events gegenseitig bekriegen, deshalb ist der Vorschlag mit dem Log schon der beste bisher.
Schau nach, ob deine Methode überhaupt aktiviert wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G mouse events AWT, Swing, JavaFX & SWT 6
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
M Java FX Mouse over AWT, Swing, JavaFX & SWT 4
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
B GUI mit Mouse Touch AWT, Swing, JavaFX & SWT 27
S Mouse Events in einer sortierten JTable unterscheiden AWT, Swing, JavaFX & SWT 18
A Mouse event und exit on close AWT, Swing, JavaFX & SWT 11
H Rechteck via Mouse bewegen AWT, Swing, JavaFX & SWT 2
H Java Robot mouse funktioniert nur auf Notebook nicht. AWT, Swing, JavaFX & SWT 4
E JFace ListSelectionDialog & Mouse-Events? AWT, Swing, JavaFX & SWT 2
lumo SWT Composite Mouse Track Lisetner AWT, Swing, JavaFX & SWT 2
K JButton nur dann aktivieren, wenn die Mouse 3 Sek. über dem Button bleibt AWT, Swing, JavaFX & SWT 2
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
R JTable - eigener Editor - Mouse events AWT, Swing, JavaFX & SWT 2
H fwststellen, ob sich Mouse auf dem Rand befindet AWT, Swing, JavaFX & SWT 3
Dit_ Buttons Mouse-Over Effekt AWT, Swing, JavaFX & SWT 8
R Key und Mouse Events AWT, Swing, JavaFX & SWT 2
Iron Monkey JTable 2 Selektionsfarben Mouse-Event AWT, Swing, JavaFX & SWT 8
D Mouse Koordinaten AWT, Swing, JavaFX & SWT 2
P Mouse Listener beenden AWT, Swing, JavaFX & SWT 14
raptorrs JFrame nur anzeigen, solange die Mouse gedrückt ist AWT, Swing, JavaFX & SWT 3
G JButton Mouse Over Text AWT, Swing, JavaFX & SWT 2
T Mouse Popup AWT, Swing, JavaFX & SWT 2
M Bug; Swing-Worker, Progressbar und Mouse AWT, Swing, JavaFX & SWT 22
R Mouse Wheel funktioniert nicht im JDialog ! AWT, Swing, JavaFX & SWT 4
T mouse-event auf jcolorchooser AWT, Swing, JavaFX & SWT 2
M eine zeichnen beim mouse ziehen AWT, Swing, JavaFX & SWT 8
K Mouse Events der Scrollbar/pane AWT, Swing, JavaFX & SWT 2
V JPopupMenu Problem und Tipp zu mouse/key AWT, Swing, JavaFX & SWT 3
S Rechteck per Mouse aufziehen AWT, Swing, JavaFX & SWT 7
S Mouse-Event in JTable AWT, Swing, JavaFX & SWT 3
K Mouse Position nach Drag und Drop? AWT, Swing, JavaFX & SWT 4
M Grafikobjekte mit Mouse auswählen und verschieben AWT, Swing, JavaFX & SWT 2
D JLabel aus einem Mouse- bzw. KeyListener aendern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben