Java-Ereignispropagierung gestoppt

8

Ich habe ein Hauptfenster:

%Vor%

Und ein Kind JPanel:

%Vor%

Wenn der Aufruf von addMouseListener im untergeordneten Fenster auskommentiert wird, erhält das übergeordnete Element Klickereignisse, wenn ich irgendwo im Fenster klicke, auch auf das untergeordnete Element. Wenn ich diesen Aufruf auschecke und auf den untergeordneten Bereich klicke, only , erhält das Kind das click -Ereignis und es wird nicht an den Elternknoten weitergegeben.

Wie kann ich verhindern, dass das Ereignis vom Kind konsumiert wird?

    
takteek 30.08.2010, 23:53
quelle

2 Antworten

3

Ich glaube nicht, dass Sie es können. Ich glaube, es ist ein Swing-Design-Prinzip, dass nur eine Komponente ein Ereignis empfängt.

Sie können jedoch das gewünschte Verhalten erhalten, aber übergeben Sie JFrame an ChildPanel und rufen Sie mouseClicked(MouseEvent) oder die von Ihnen gewünschte Methode auf. Oder hol einfach die Elternkomponente.

%Vor%     
The Alchemist 31.08.2010, 01:01
quelle
5

In Swing möchten Sie im Allgemeinen, dass die angeklickte Komponente antwortet. Sie können das Mausereignis jedoch wie nachfolgend dargestellt an das übergeordnete Element weiterleiten. Hier ist ein ähnliches Beispiel .

%Vor%     
trashgod 31.08.2010 04:14
quelle

Tags und Links