JPopMenu und MouseEvents

Status
Nicht offen für weitere Antworten.
G

Gast2

Gast
Hallo zusammen,

ich hab Probleme mit einem JPopMenu und zwar bekomm wenn das Popup geöffnet ist die mousePressed events(die anderen kein Problem) nicht mehr.
so ruf ich mein popup auf wenn ich für c null mitgeb klappt alles wunderbar nur wenn ich eine komponente mitgeb-->klappt es nicht mehr...
mit java 1.5 funktioniert es mit java 1.6 leider nicht mehr...
Java:
popup.show(c, p.x, p.y);

Sobald ich irgendeine componente mitgeb frisst er mit die mousePressed events an was kann das liegen?
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Also nach längerem Suchen hab ich was gefunden:

Also ich hab erstmal geschaut welche meiner Klassen das Event wirft:
Dazu hab ich ein AWTEventListener meinem Toolkit hinzugefügt

Java:
 public void eventDispatched(AWTEvent event) {
        if (event.getID() == MouseEvent.MOUSE_PRESSED) {

            Object c = event.getSource();
            if (c instanceof MyClass) {
                if (event instanceof MouseEvent)
                {
                    MouseEvent event2 = (MouseEvent) event;
                    System.out.println(event2);
                    System.out.println(event2.isConsumed());
                }
            }
        }
    }

So die Klasse passt also:

Nächster Schritt hab ich in die Component Klasse rein debuggt methode dispatchEventImpl line 4434 java 1.6
Java:
		if (inputContext != null) {
		    inputContext.dispatchEvent(e);
		    if (e.isConsumed()) {
			if (e instanceof FocusEvent && focusLog.isLoggable(Level.FINER)) {
			    focusLog.finer("3579: Skipping " + e);
			}
			return;
		    }                
		}

hier ist mein e.isConsumed() true
1. Warum?
2. Wie bekomm ich das weg?


Wie gesagt unter Java 1.5 ist es nicht so ???;(
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Wahnsinn ist halt dass die keyReleased events in der gleichen action wieder "normal" sind...
 
G

Gast2

Gast
AHAAAAAAAA
Da hab ich es doch
In der Klasse BasicPopupMenueUI gibt es das codestück
Java:
                    // Ask UIManager about should we consume event that closes
                    // popup. This made to match native apps behaviour.
                    boolean consumeEvent =
                        UIManager.getBoolean("PopupMenu.consumeEventOnClose");
                    // Consume the event so that normal processing stops.
                    if(consumeEvent && !(src instanceof MenuElement)) {
                        ((MouseEvent)ev).consume();
                    }

und in java5 liefert das hier false und in java6 true
Java:
UIManager.getBoolean("PopupMenu.consumeEventOnClose")
Zum glück gibt es OpenSource =)...

Weiß jemand was dieses Property genau bedeutet??
Und kann ich es einfach um switchen?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben