MousePressed

Status
Nicht offen für weitere Antworten.
C

Christian

Gast
HI!

Wie kann ich unterscheiden ob die rechte oder linke Mousetaste gedrückt wurde?
Mein Programm soll dann ungefair so aussehen:

Code:
if (Mauseklick = rechts)
{
  Anweisung1;
}
if (Mouseklick = links)
{
  Anweisung2;
}
 

Math55

Bekanntes Mitglied
hi, hier mal noch was:

Code:
public class MyMouseListener extends MouseAdapter {
        public void mouseClicked(MouseEvent evt) {
            if ((evt.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
                //links            }
            if ((evt.getModifiers() & InputEvent.BUTTON2_MASK) != 0) {
                //mitte            }
            if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) != 0) {
                //rechts
            }
        }
    }


dann noch adden:

Code:
deineComponent.addMouseListener(new MyMouseListener());

hilft das?

gruß math55
 

TSlaughter

Mitglied
public void mouseClicked(MouseEvent e)
{
if (e.getButton()==3) // rechts click
{
dann Aktion
}
else if (e.getButton()==1) //links click
{
dann andere Aktion
}

vorher musst du noch den MousListener Adden.

du musst dich entscheiden ob MouseClicked() oder MousePressed()
 

AlArenal

Top Contributor
Geht das auch aufm Mac mit Original-Apple-Maus? ;)

Wird der passende Event dann bei Apfel-Shift-Mausklick (oder wie auch immer das da geht) ausgelöst?
 

Stefan1200

Top Contributor
TSlaughter hat gesagt.:
public void mouseClicked(MouseEvent e)
{
if (e.getButton()==3) // rechts click
{
dann Aktion
}
else if (e.getButton()==1) //links click
{
dann andere Aktion
}

Ansich geht das (verwende ich teilweise auch).
Aber diese Variante hat ein Problem mit der rechten Maustaste.
Viele Windows Nutzer haben auch noch eine 2 Tasten Maus, hier wäre die rechte Maustaste die Nummer 2, nicht 3.
Lediglich wenn man nur sicher gehen will, das die linke Maustaste gedrückt wurde, ist diese Variante zuverlässig.


Bezüglich Mac: Habe ich noch nicht getestet, aber im Zweifelfall kann man auch mit e.isAltDown(), e.isControlDown() oder e.isShiftDown() abfragen, ob eine von diesen Tasten beim Mausklick gedrückt wurde.
 

Ebenius

Top Contributor
Wenn Du es für den Mac kompatibel halten willst, mach es anders: Normaler Maus-Klick:
Code:
if(SwingUtilities.isLeftMouseButton(mouseEvent)) // -> linke Maus-Taste -> Maus-Klick!
Wenn Du dann einen PopUp (z.B. Kontext-Menü) machen willst, dann prüfst Du statt dessen:
Code:
if(mouseEvent.isPopupTrigger()) // -> Popup, ContextMenu -> Plattform dependent
So gehst Du kein Risiko ein. Und es funktioniert!

Bezüglich der Event-Masken:
Math55 hat gesagt.:
Code:
public class MyMouseListener extends MouseAdapter { 
        public void mouseClicked(MouseEvent evt) { 
            if ((evt.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { 
                //links            } 
            if ((evt.getModifiers() & InputEvent.BUTTON2_MASK) != 0) { 
                //mitte            } 
            if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) != 0) { 
                //rechts 
            } 
        } 
    }
Das ist erstmal richtig, allerdings ein bisschen unleserlicher als mit den SwingUtilities.

Es grüßt Ebenius
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben