Avatar billede tmo Nybegynder
02. oktober 2001 - 12:46 Der er 6 kommentarer og
2 løsninger

Jmenu

Hej

Jeg har et problem med min Jmenu. Jeg har lavet en menu som en normal menu i fx. IE. dvs. vælger man et menupunkt, kommer menuen, og klikker man et andet sted på skræmen forsvinder den. Mit problem er bare at klikker man på en JmenuItem i selve menuen fanger den ikke min actionlistener på JmenuItem, og lukker menuen. Jeg har implementeret en focuslistener og added den til min Jmeneu se kode (redigeret).


private void initComponents(){     
      menuBar = new JMenuBar();
      menu =  (JMenu)getMenu();
      menu.addFocusListener(this);
      menuBar.add(menu);   
      getContentPane().setLayout(new java.awt.GridLayout(1, 1)); 
    setJMenuBar(menuBar);
}
   
    public JMenu getMenu(){ 
 
  menu = new JMenu(\"Filer\");
  submenu = new JMenu(\"Ny\");

  sessionData = getParameter(\"liste\");

StringTokenizer st = new StringTokenizer(sessionData, \"@\");
    while (st.hasMoreTokens()) {
           
        menuItem = new JMenuItem(st.nextToken());
        menuItem.addActionListener(this);
        submenu.add(menuItem);   
  }
 
  menu.add(submenu);
  menu.addSeparator();
 
  menuItemGem = new JMenuItem(\"Gem..\");
  menu.add(menuItemGem);
  menuItemGem.addActionListener(this);
 
 
    return menu;
}


    public void actionPerformed(ActionEvent e) {
      Object os = e.getSource();
     
      if(os == menuItemGem)
      {
          System.out.println(\"Gem den aktuelle file\");
      }
    }


    public void itemStateChanged(ItemEvent e){}

public void focusGained(FocusEvent e){
  System.out.println(\"har fokus\");
  }

  public void focusLost(FocusEvent e){
  menu.setPopupMenuVisible(false);
  menu.updateUI();     
  }
 
Avatar billede martin_schou Nybegynder
02. oktober 2001 - 12:53 #1
JMenu.addMenuListener(MenuListener l)

du skal altså ikke bruge en ActionListner men en MenuListner.
Avatar billede martin_schou Nybegynder
02. oktober 2001 - 12:54 #2
Det skulle selvfølgelig have været et svar ... hehe
Avatar billede tmo Nybegynder
02. oktober 2001 - 14:31 #3
ok, men hvordan for man fanget hvilken en Jitem man har valgt??
Avatar billede martin_schou Nybegynder
02. oktober 2001 - 14:33 #4
aner det ikke, har ikke rodet med menuer ... men det virker vel på samme måde som med ActionListners, nemlig at du sammenligner e.getSource() med menupunktet ... ?
Avatar billede ladyhawke Novice
09. oktober 2001 - 14:03 #5
Du kan lave en specifik action listener for hvert menu punkt, så har du helt styr på hvad der sker når man vælger et menupunkt. Det er især velegnet hvis der skal meget kode til ved det enkelte menupkt.

Jeg har brugt følgende kode i et program:

about = new JMenuItem(\"About FS\");
about.addActionListener(new aboutMenuHandler());
about.setAccelerator(KeyStroke.getKeyStroke(\'A\', java.awt.Event.CTRL_MASK, false));

hvor aboutMenuHandler er en klasse der implementerer ActionListener...

Hvis du vil nøjes, kan du sikkert benytte Martin Schous forslag (det har jeg ikke prøvet)
Avatar billede tmo Nybegynder
09. oktober 2001 - 17:14 #6
hej

Jeg har løst problemet med en mouselistener. Når musen er over menuen kan den ikke kalde menu.setPopupMenuVisible(false), men først når den forlader menuen. Men tak for hjælpen..

tmo
Avatar billede tmo Nybegynder
09. oktober 2001 - 17:16 #7
undskyld martin.... du skulle have haft 30 p.
Avatar billede martin_schou Nybegynder
10. oktober 2001 - 07:49 #8
jeg overlever sgu nok :-)
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