Zum Inhalt springen

Auf ein MenuEvent reagieren. (swing)


Gast

Empfohlene Beiträge

Hallo zusammen,

ich habe mit mal ein Fenster gebastelt inkl. einem Menu und möchte nun, wenn der Benutzer auf "Programm"->"beenden" klickt, das sich das Programm beendet. Was mache ich hierbei falsch?


package swing;


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;


public class Fenster extends JFrame implements WindowListener, ActionListener, MouseListener, KeyListener, MenuListener

{

	//Attribute

	private JMenuBar jmbMenu = new JMenuBar();

	private JMenu jmProgramm = new JMenu("Programm");

	private JMenuItem jmiProgrammBeenden = new JMenuItem("beenden");

	//Ende Attribute


	//ActionListener

	public void actionPerformed(ActionEvent event) {}

	//Ende Action Listener


	//MouseListener

	public void mouseClicked(MouseEvent event) {}


	public void mouseExited(MouseEvent event) {}


	public void mouseReleased(MouseEvent event) {}


	public void mouseEntered(MouseEvent event) {}


	public void mousePressed(MouseEvent event) {}

	//Ende MouseListener



	//WindowListener

	public void windowClosing(WindowEvent event) {}


	public void windowClosed(WindowEvent event) {}


	public void windowDeiconified(WindowEvent event) {}


	public void windowIconified(WindowEvent event) {}


	public void windowActivated(WindowEvent event) {}


	public void windowDeactivated(WindowEvent event) {}


	public void windowOpened(WindowEvent event) {}

	//Ende WindowListener


	//KeyListener

	public void keyPressed(KeyEvent event) {}


	public void keyReleased(KeyEvent event) {}


	public void keyTyped(KeyEvent event) {}

	//Ende KeyListener


	//MenuListener

	public void menuCanceled(MenuEvent event) {}


	public void menuDeselected(MenuEvent event) {}


	public void menuSelected(MenuEvent event)

	{

		if (event.getSource() == jmiProgrammBeenden)

		{

			System.exit(0);

		}

		else

		{};		

	}

	//Ende MenuListener


	public void createComponents()

	{

		this.setJMenuBar(jmbMenu);

		this.getContentPane().add(jmbMenu);		

		this.getContentPane().add(jmProgramm);

		this.getContentPane().add(jmiProgrammBeenden);

		jmiProgrammBeenden.addActionListener(this);

		jmProgramm.add(jmiProgrammBeenden);

		jmbMenu.add(jmProgramm);

	}	


	public Fenster(String strTitel, int intBreite, int intHoehe)

	{

		this.getContentPane().setLayout(null);

		this.setTitle(strTitel);

		this.setBounds(1,1,intBreite,intHoehe);

		this.createComponents();

		this.setVisible(true);

		this.addWindowListener(this);

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

du hast zwar den ActionListener beim MenuItem registriert, den Code zum beenden Der Anwendung aber in den MenuListener gepackt. Dieser wird aber garnicht aufgerufen. Also den Code in den ActionListener packen und statt:


if (event.getSource() == jmiProgrammBeenden) {

   System.exit(0);

}

glaube ich besser:

if (event.getActionCommand().equals("beenden")) {

   //setVisible(false);

   //dispose()

   System.exit(0);

}

schreiben.

Gruß,

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

das stimmt. Dafür kannst du bei einem JMenu (bei Dir "jmProgramm") einen solchen Listener registrieren.


    jmProgramm.addMenuListener(new MenuListener() {

      public void menuCanceled(MenuEvent me) {

        System.out.println("menuCanceled");

      }

      public void menuDeselected(MenuEvent me) {

        System.out.println("menuDeselected");

      }

      public void menuSelected(MenuEvent me) {

        System.out.println("menuSelected");

      }

    });

Zum Testen, die Methodennamen geben gut vor, worrauf der Listener reagiert.

Gruß, Peter :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...