Popup-Trigger-Maustaste gleich beim Programmstart ermitteln?

Status
Nicht offen für weitere Antworten.

inflamer

Bekanntes Mitglied
Hallo Java-Freunde,

ich habe folgendes Problem:

Mein Programm hat einen WYSISYG-Editor. Darin kann der User u.a. mit der Maus Objekte verschieben. Außerdem lässt sich mit einem Rechtsklick auf ein Objekt ein Popup-Menü öffnen. Der Hacken ist nun, dass das Verschieben von Objekten derzeit mit ALLEN verfügbaren Maustasten möglich ist, was den unschönen Effekt zur Folge hat, dass wenn der User beim Rechtsklicken auf ein Objekt die Maus versehentlich bewegt, das Objekt zusätzlich verschoben wird, bevor das Popup-Menü aufklappt.

Das musste ich wiederum bislang deshalb so implementieren, weil unter Windows erst ein 'losgelassener' Rechtsklick ein Popup-Trigger-Event darstellt, sprich, die Information, ob beim 'MouseEvent' tatsächlich die Popup-Trigger-Maustaste gedrückt wurde, sich erst in der 'mouseReleased(MouseEvent e)' abfragen lässt.

Code:
public void mousePressed(MouseEvent e) {
  System.out.println(e.isPopupTrigger()); // liefert unter Windows IMMER 'false'
}

Kennt jemand eine Lösung, mit der man am Besten gleich beim Start der Anwendung die Popup-Trigger-Maustaste ermitteln könnte?

Vielen Dank!
 
ein popup wird unter windows bei mouseRelesed angezeigt nich bei mousePressed
 
Verbiete das Verschieben der Objekte mit der rechten Maustaste doch einfach. Ist IMHO sowieso nicht erwartungskonform - widerspricht also den Prinzipien guten GUI-Designs.

mpG
Tobias
 
Hallo und danke für die Antworten!

Hatte gestern bereits einige Zeit dran 'rumprobiert und bin schließlich zur folgenden Lösung gekommen:

Code:
private boolean isPrimaryMouseButtonDown(MouseEvent e) {
  return (e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == MouseEvent.BUTTON1_DOWN_MASK;
}
 
Tobias hat gesagt.:
Verbiete das Verschieben der Objekte mit der rechten Maustaste doch einfach. Ist IMHO sowieso nicht erwartungskonform - widerspricht also den Prinzipien guten GUI-Designs.

mpG
Tobias

Sehe ich auch so. Es ging mir eben darum, eine plattform- und maustastenanzahlunabhängige Lösung dafür zu finden. 😉

Hat hier eigentlich nur einer von den Antwortenden die Frage wirklich gelesen? 😎
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben