Kontextmenü öffnen in eigener Klasse
-
Hallo.
Ich lese gerade das "Handbuch der Java Programmierung" von Guido Krueger.
Dort steht ein Beispiel in dem in der Fensterklasse die Funktion processMouseEvent(..) ein Kontextmenü aufruft.
Kann ich diesen Aufruf auch vom GUI - Code Trennen und ihn in eine eigene Klasse schreiben? Wenn ja, dann wie?
Ich bin in Java noch ziemlicher Anfänger.
mfg, FooFighter86
-
Kapitel "30.6 Kontextmenüs" lesen. Das erste Beispiel verdeutlicht wie man es macht.
Wenn du vom gleichen WBeispiel wie ich redest, dann ist das doch schon in einer eigenen Klasse (Listing3006.java)
-
Ja genau ich meine auch dieses Listing.
Aber ich möchte den Teil der in processMouseEvent(...) steht
in eine eigene Listenerklasse packen. Geht das?
-
Am einfachsten so:
class MyMouseListener extends MouseAdapter implements ActionListener { privete MyPopupMenu popup = new new MyPopupMenu(this); public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } public void actionPerformed(ActionEvent event) { System.out.println(event.getActionCommand()); } }
Dann schreibst du im Konstruktor einfach anstatt enableEvents(AWTEvent.MOUSE_EVENT_MASK); ein addMouseListener(new MyMouseListener());
Sollte eigentlich funken.
-
Ja das könnte so gehen.
Und wie kann ich mein Kontextmenü anzeigen wenn die Kontextmenü-Taste auf der Tastatur gedrückt wird? Gibt es da auch eine VK_... Konstante die man in KeyEvent abfragen kann?
-
Ich weiß nicht, ob es dafür ein VK_... gibt. (Die Taste ist ja auch nicht Plattformunabhängig, desshalb denek ich mal nicht, dass es die gibt)
Man kann das ja einfach versuchen: Einfach ein Programm schreiben, das einem die Key-Codes für jede gedrückte Taste ausgibt...Es könnte natürlich sein, dass die Windows-Variante der JVM automatisch ein MouseEvent sendet, wenn man diese Taste drückt.