Button des Popup-Menüs ermitteln

  • Themenstarter Themenstarter texton
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

texton

Gast
Ich binde ein Kontextmenü für verschiedene Buttons so ein:
Code:
buttons[ i ].addMouseListener( new MouseListener()
{
   public void mouseClicked( MouseEvent event )
   {
      checkForContextMenu( event );
   }
   // usw.
}
Das klappt auch soweit alles, das Menü erscheint (durch checkForContextMenu() gesteuert) usw. Wie bekomme ich heraus, zu welchem Button das jeweilige Popup-Menü gehört? Der MouseEvent bezieht sich leider nur auf den angeklickten Eintrag des Kontextmenüs.
 
Warum nutzt du keinen schnöden ActionListener und setzt bei den Buttons schnöde ActionCommands, die du auswertest?
 
Die Architektur des Programms ist auf Index-Arrays aufgebaut. Jeder der bis zu 100 Button erhält einen Index in der Reihenfolge seiner Definition, also 1. Button = Index 1. Über den Index werden aus einem Array alle weiteren Infos geholt, die im Zusammenhang mit dem Button stehen, also z. B. Pfade einer Anwendung. Deshalb möchte ich einfach, dass mir der Button sagt, "Ich bin Button 1". Für ein ActionEvent klappt dies auch problemlos. Meine Schwierigkeit ist das MouseEvent. Über mouseEntered( MouseEvent) kann ich zwar erfahren, dass die Maus gerade einen Button betreten hat, mir gelingt es aber nur, den Text des überfahrenden Buttons zu ermitteln. Bei ActionListenern erhalte ich ein ActionEvent, dass ich über getSource() auflösen kann.
 
Oder aber, du gestaltest deinen MouseListener ganz ander, nämlich als eigene Klasse und nich anonym:

Code:
private class MouseAdapter implements MouseListener{

    private Parameter infosZumButton;
    //!
    public MouseAdapter( Parameter benötigeInformationenZumKnopf ){    
        infos = infos;
   }
      public void mouseEntered(MouseEvent e){
      werteDieInfosDesKniopfesAusOhneEventKram();
    }

}

//Anbindung
buttons[ i }.addMouseListener(new MouseAdapter( infos[i] ) ;

Dann hat Jeder Knopf seinen eigenen MouseAdapter, der bereits über die Infos verfügt, die er brauch um zu reagieren
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben