Avatar billede larskrimi Novice
22. januar 2000 - 00:23 Der er 1 kommentar og
1 løsning

PopupMenu i Java

Hvad skal der til for at lave en PopupMenu der reagerer på højreklik i en dialog box? Skal jeg implementere en MouseListener og så køre den fra en public void MouseClicked(), eller skal jeg bruge enableEvents(AWTEvent.MOUSE_EVENT_MASK);
sammen med public void processMouseEvent (MouseEvent e)?

Jeg har erklæret min PopupMenu med de elementer der skal i, men kan ikke få den til at blive triggered.
Avatar billede andersb Nybegynder
27. januar 2000 - 19:50 #1
Har du et generelt problem med PopupMenu eller er det specielt i en dialog-boks?
Bruger du AWT eller Swing?
----
Jeg har lavet et lille eksempel [delvist fra The Java Tutorial] på en PopupMenu i et alm. vindue (Frame)
// AB 27.01.2000, eksempel på (virkningsløs) popup-menu
// Frit efter The Java Tutorial side 452-454 + 821-824
import java.awt.*;
import java.awt.event.*;

class MenuWindow extends Frame {
  private PopupMenu popup;

  public MenuWindow() {
    this.setLayout(new FlowLayout());
      // VIGTIG, ellers er der kun plads til én komponent i vinduet
      // - og så ryger popup ud, da den er adderet før label.
      // En Frame har pr. default BorderLayout
    popup = new PopupMenu();
    this.add(popup);
    popup.add(new MenuItem("Hej"));
    popup.add(new MenuItem("med"));
    popup.add("dig");

    MouseListener listener = new PopupListener();
    this.addMouseListener(listener);
    Label label = new Label("En label");
    this.add(label);
    label.addMouseListener(listener);
    // popup-menu også tilgængelig over labelen
    // Hvis popup-menuen skal være tilgængelig over alle komponenter i vinduet,
    // så skal alle komponenterne addere listener.
  }

  public static void main(final String [] args) {
    MenuWindow window = new MenuWindow();
    window.setSize(450, 200);
    window.setVisible(true);
  }

  class PopupListener extends MouseAdapter {
    public void mousePressed(final MouseEvent e) {
      maybeShowPopup(e);
    }

    public void mouseReleased(final MouseEvent e) {
      maybeShowPopup(e);
    }

    private void maybeShowPopup(final MouseEvent e) {
      if (e.isPopupTrigger()) {
        popup.show(e.getComponent(), e.getX(), e.getY());
      }
    }
  }
}
Avatar billede larskrimi Novice
30. januar 2000 - 18:25 #2
Tak for hjælpen, selv om jeg havde fået styr på det. Det var min MouseListener, det var mit første argument i
popup.show(e.getComponent(), e.getX(), e.getY());

som var forkert + at jeg havde blandet MouseAdaptoren sammen med MouseListeneren. Tak for eksemplet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester