Jan: JMenu eintrag anklicken

Hi zusammen, ich hab im main mein menü definiert, nun möchte ich das wenn auf den Menüpunkt "Pendenz erfassen" geklickt wird, der dialog dlgErfassen erscheint. was muss ich da tun?

package pendenz;

import javax.swing.*;
import java.awt.*;

public class Main {
  boolean packFrame = false;

//Die Anwendung konstruieren
  public Main() {
    frmStart frame = new frmStart();
    ImageIcon neu = new ImageIcon("./logo.gif");
    ImageIcon clo = new ImageIcon("./close.gif");

JMenuBar mbar = new JMenuBar();
    JMenu quick = new JMenu( "Quick" );
    quick.add(new JMenuItem("Pendenz erfassen", neu));
    quick.addSeparator();
    quick.add(new JMenuItem("Beenden", clo));
    mbar.add( quick );
    frame.setJMenuBar( mbar );

//Frames überprüfen, die voreingestellte Größe haben
    //Frames packen, die nutzbare bevorzugte Größeninformationen enthalten, z.B. aus ihrem Layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Das Fenster zentrieren
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }

//Main-Methode
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    new Main();
  }
}

  1. Hi,

    Hi zusammen, ich hab im main mein menü definiert, nun möchte ich das wenn auf den Menüpunkt "Pendenz erfassen" geklickt wird, der dialog dlgErfassen erscheint. was muss ich da tun?

    http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

    Viele Grüße,
    Martin Jung

    1. Hi,
      sorry dass ich gestern nicht mehr zurückgeschreiben hab, hab etwas früher feierabend gemacht. vielen dank für eure hinweise, werde mich gleich dahinter sezten :)
      grüsse Jan

      1. Hi,

        Hi,
        sorry dass ich gestern nicht mehr zurückgeschreiben hab, hab etwas früher feierabend gemacht. vielen dank für eure hinweise, werde mich gleich dahinter sezten :)

        Keine Ursache - Dein Feedback ist in jedem Falle nett!

        Viele Grüße,
        Martin Jung

  2. Hallo,

    du musst erstmal dem JMenuItem eine Action zuordnen, der die Methode public void actionPerformed enthält. Dazu hast du zwei Möglichkeiten.

    1. Einfach einen ActionListener einfügen:

    public Main() {
        frmStart frame = new frmStart();
        ImageIcon neu = new ImageIcon("./logo.gif");
        ImageIcon clo = new ImageIcon("./close.gif");

    JMenuBar mbar = new JMenuBar();
        JMenu quick = new JMenu( "Quick" );
        quick.add(new JMenuItem("Pendenz erfassen", neu));
        quick.addSeparator();
        quick.add(new JMenuItem("Beenden", clo));
        mbar.add( quick );
        frame.setJMenuBar( mbar );

    //ActionListener in deiner Main-Klasse
           ActionListener meinListener = new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   if(e.getActionCommand().equals("Pendenz erfassen")){
                       //was soll er tun
                   }
                   //für weitere MenuItems fortsetzen und eventuell
                   //am Ende eine else-Methode angeben
               }
           }
    ...

    }

    2. Oder du machst eine extra Klasse einer Action, die die AbstractAction erweitert:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;

    public class ExampleAction extends AbstractAction {
        public ExampleAction(String text, Icon icon){
            super(text,icon);
        }

    public void actionPerformed(ActionEvent e){
            if(e.getActionCommand().equals("Pendenz erfassen")){
                //was soll er tun
            }
        }
    }

    Diese nutzt du dann so in deiner Main-Klasse:

    public Main() {
        frmStart frame = new frmStart();
        ImageIcon neu = new ImageIcon("./logo.gif");
        ImageIcon clo = new ImageIcon("./close.gif");

    JMenuBar mbar = new JMenuBar();
        JMenu quick = new JMenu( "Quick" );

    quick.add(new JMenuItem(new ExampleAction("Pendenz erfassen",neu)));

    quick.addSeparator();

    quick.add(new JMenuItem(new ExampleAction("Beenden", clo)));

    mbar.add( quick );
        frame.setJMenuBar( mbar );

    ...

    }

    Ich hoffe dir damit geholfen zu haben.

    Viele Grüße,

    Miriam

  3. Hallo,

    die URL von Martin hättest du in der API-Doku zu JMenu oder MenuItem
    gefunden.

    Des weiteren sind Menus in jedem Java-Buch und -Tutorial genaustens
    erklärt.

    http://www.javabuch.de
    http://www.galileocomputing.de/openbook/javainsel3/

    Gruß
    Slyh

    1. Hi Slyh,

      die URL von Martin hättest du in der API-Doku zu JMenu oder MenuItem gefunden.

      Jetzt hast Du meinen Trick verraten. Wenn es nicht so traurig wäre, könnte man sogar schmunzeln..

      Viele Grüße,
      Martin