JMenu-Erweiterung in externer Datei

P

Phoe

Gast
Hi,

ich versuche ein Programm geschrieben, dass einwandfrei funktioniert. Nun wollte ich eine Art Addon schreiben, das über das JMenu aufrufbar ist. Ich möchte das Hauptprogramm ungern verändern. Also versuche ich einen neuen Menüpunkt über eine 2. Java-File hinzuzufügen. Allerdings funktioniert dies nicht. Hier der betroffene Teil des Quellcodes beider Files.

ApplicationWindow.java
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;


/**
 * Hier wird der Ereignishandler für das MenuItem durch das MenuItem selbst
 * implementiert. Man spart sich dadurch die Definition einer separaten
 * Ereignishandler-Klasse. Die Methode actionPerformed muss somit durch die
 * MenuItem-Klasse selbst implementiert werden. 
 */
class DateiOeffnenItem extends JMenuItem implements ActionListener {
		
	public DateiOeffnenItem () {
		super ("Oeffnen");
		addActionListener (this);
	}

	public void actionPerformed(ActionEvent e) {
		
		/** 
		 * Anstelle einer Ausgabe auf die Konsole wird hier ein
		 * Meldungsfenster erzeugt. Dem Meldungsfenster muss mitgeteilt werden,
		 * welches bereits vorhandene Fenster das Elternfenster sein soll.
		 * Die Position des Meldungsfensters wird dann relativ zum Elternfenster
		 * festgelegt. Da es zur Zeit nur das Hauptfenster der Anwendung gibt,
		 * wird dieses als Elternfenster angegeben.
		 */
		JOptionPane.showMessageDialog (
				ApplicationWindow.theFrame,			// Elternfenster des Meldungsfensters 
				"Datei -> Oeffnen", 				// Meldungstext
				"Titel", 							// Titel des Meldungsfensters
				JOptionPane.INFORMATION_MESSAGE);	// Art der Meldung
	}
}


class DateiSpeichernItem extends JMenuItem implements ActionListener {
	
	public DateiSpeichernItem () {
		super ("Speichern");
		addActionListener (this);
	}
	
	public void actionPerformed(ActionEvent e) {
		
		System.out.println ("Datei -> Speichern");
	}
}


class DateiMenu extends JMenu {
	
	public DateiMenu () {
		
		super ("Datei");
		add (new DateiOeffnenItem());
		addSeparator();
		add (new DateiSpeichernItem());
		
	}
}


class Menuezeile extends JMenuBar {
	
	public Menuezeile () {
		
		add (new DateiMenu());
	}
}

public class ApplicationWindow extends JFrame {

	class WindowEventHandler extends WindowAdapter {
		public void windowClosing (WindowEvent e) {
			System.exit(0);	// Anwendung beenden mit Fehlercode 0 ans Betriebssystem
		}
	}
	
	public ApplicationWindow () {
		
		// Ereignishandler für das Fenster festlegen:
		addWindowListener(new WindowEventHandler());
		
		// Menuezeile installieren:
		setJMenuBar (new Menuezeile());

		// Eigenschaften des Fensters festlegen:
		setTitle ("Willkommen bei Swing mit Menuezeile!");
		setSize (400, 300);	// Breite: 400 Pixel; Hoehe: 300 Pixel
		setVisible (true);	// Fensterrahmen sichtbar machen
	}
	
	
	
	/**
	 * Oeffentliche Klassenvariable, speichert eine Referenz auf das
	 * Anwendungsfenster. Auf diese Weise kann auch in Ereignishandlern für
	 * MenuItems ein Meldungsfenster angezeigt werden, das relativ zum
	 * Anwendungsfenster positioniert werden kann.
	 */
	public static JFrame theFrame;
	
	
	public static void main (String[] args) {
		
		/**
		 * Hier merken wir uns die Referenz des Anwendungsfensters
		 * in einer Klassenvariablen.
		 */
		theFrame = new ApplicationWindow ();
	}
}

addon1_DateiMenu.java
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

class addon1_menu extends JMenuItem implements ActionListener
{
	public addon1_menu () 
	{
		super ("Addon");
		addActionListener (this);
	}
	public void actionPerformed(ActionEvent erg)
	{
		
	}
}

public class addon1_DateiMenu extends DateiMenu
{
	public void DateiMenu () 
	{
		//super.DateiMenu(); //unter Scite wirft er mir an dieser Stelle einen Error aus, er könnte die Methode nicht finden
		add (new addon1_menu());
	}
}

Ich denke es ist eine Kleinigkeit, die ich nicht sehe, aber danke für alles im Voraus.

mfG Phoe
 

Michael...

Top Contributor
Du musst das zusätzliche MenuItem in der Klasse DateiMenu hinzufügen.
Deine zweite Klasse ... extends DateiMenu hilft Dir da wenig - Java ist objektorientiert.
 
P

Phoe

Gast
Danke erstmal für diese schnelle Antwort,

die Sache ist nun, dass ich eigentlich dachte, ich könnte mit "extends" und das darauf folgende "super." die klasse aus der hauptdatei erweitern.
 

Michael...

Top Contributor
super() wird sofern ein Standardkonstruktor vorhanden automatisch aufgerufen.
Das hilft Dir allerdings nichts, da Dein ApplicationWindow ja ein Objekt vom Typ
Code:
DateiMenu
verwendet, es wird ja nirgends ein Object vom Typ
Code:
addon1_DateiMenu extends DateiMenu
erzeugt.
 
P

Phoe

Gast
hm... das ist logisch... also scheint das mit hilfe von "Vererbung" nicht zu funktionieren.
 
P

Phoe

Gast
P. S. ich merk grad, wo ich alte unterlagen durchblätter, dass ich da eh ganz großen mist gemacht habe~

Dennoch Danke, Michael...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Y Backgroundcolor JMenu AWT, Swing, JavaFX & SWT 2
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
llabusch Prüfen ob JMenu leer ist & löschen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
S JMenu unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
S jMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
R JMenu aus Ordnern AWT, Swing, JavaFX & SWT 4
P JMenu aus Dateistruktur AWT, Swing, JavaFX & SWT 2
I JMenu AWT, Swing, JavaFX & SWT 5
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
frankred Swing JMenu verschwindet nicht beim klicken ausserhalb des JMenu! AWT, Swing, JavaFX & SWT 4
F JMenu auf JPanel AWT, Swing, JavaFX & SWT 5
E Swing JMenu in GUI einbinden AWT, Swing, JavaFX & SWT 5
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
E JMenu übersetzen AWT, Swing, JavaFX & SWT 9
W JMenu wird vom JPanel ständig überzeichnet... Abhilfe? AWT, Swing, JavaFX & SWT 3
T Swing JMenu als Button behandeln AWT, Swing, JavaFX & SWT 4
T Swing jMenu AWT, Swing, JavaFX & SWT 6
R JMenu in JToolBar AWT, Swing, JavaFX & SWT 6
T Swing JMenu falsch positioniert AWT, Swing, JavaFX & SWT 2
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
Developer_X Swing JMenu Bug gefunden AWT, Swing, JavaFX & SWT 5
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
hdi Welche Klasse + Listener für JMenu AWT, Swing, JavaFX & SWT 2
A JMenu Bug? AWT, Swing, JavaFX & SWT 12
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
C JMenu bzw. JButton mit URL versehen AWT, Swing, JavaFX & SWT 2
G ActionListener auf JMenu funktioniert nicht AWT, Swing, JavaFX & SWT 4
X JMenu AWT, Swing, JavaFX & SWT 2
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
Ernesto95 Programmabsturz beim Einbinden eines JMenu AWT, Swing, JavaFX & SWT 18
P jMenu ohne Menubar - Jigloo zeigts AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
G Scrollbares JMenu AWT, Swing, JavaFX & SWT 4
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
V JMenu und die Tabs von JTabbedFrame sind auf einmal schwarz AWT, Swing, JavaFX & SWT 3
H JMenu wird leider unterhalb! der CanvasFläche dargestellt AWT, Swing, JavaFX & SWT 5
X Swing: Bilder überlagern JMenu AWT, Swing, JavaFX & SWT 4
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
padde479 JMenu mnemonic AWT, Swing, JavaFX & SWT 3
N JMenu und JPanel AWT, Swing, JavaFX & SWT 5
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
B 1 JMenu in Mehrere JMenus AWT, Swing, JavaFX & SWT 2
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
D JMenu -> Accelerator AWT, Swing, JavaFX & SWT 2
I JMenu(Item) und FocusListener AWT, Swing, JavaFX & SWT 3
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
R JMenu + Farbe von Hintergrund AWT, Swing, JavaFX & SWT 2
M JMenu verschwindet unter ScrollPane AWT, Swing, JavaFX & SWT 3
D Schriftfarbe ändern (JFrame, JMenu etc) AWT, Swing, JavaFX & SWT 3
K JMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
I JMenu wird nicht dargestellt AWT, Swing, JavaFX & SWT 12
H JMenu soll "offen bleiben" AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
redztripe Haken in JMenu setzen? AWT, Swing, JavaFX & SWT 8
G Icon zu JMenu AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G JMenu - neuer Frame AWT, Swing, JavaFX & SWT 2
X Verschwinden des JMenu unterbinden AWT, Swing, JavaFX & SWT 3
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
E JTextArea überlagert JMenu AWT, Swing, JavaFX & SWT 2
D JMenu spinnt AWT, Swing, JavaFX & SWT 7
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
G JMenu Info-Fenster ganz Rechts AWT, Swing, JavaFX & SWT 5
H JMenu zuklappen AWT, Swing, JavaFX & SWT 7
K JMenu Aktionen AWT, Swing, JavaFX & SWT 3
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
I Swing Focus Listener bei PComboBox von pswing Erweiterung AWT, Swing, JavaFX & SWT 7
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
F Swing ImageIcons von externer Quelle (relativ) AWT, Swing, JavaFX & SWT 6
D Panel aus externer Klasse holen AWT, Swing, JavaFX & SWT 2
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
S AWT Arrays in externer jTable Klasse ausgeben AWT, Swing, JavaFX & SWT 3
B In externer Eventhandlerklasse auf GUI-Elemente zugreifen AWT, Swing, JavaFX & SWT 3
M Probleme mit JFrame und nicht angezeigter externer Klasse AWT, Swing, JavaFX & SWT 8
J Aufruf externer Quellen aus java AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben