Aufbau eines Menüs

sos

Mitglied
Könnt ihr mir helfen bitte, ich muss "createMenus" in der Methode "initializeApp" aufrufen,
ich dachte das wäre kein Thema doch wenn ich das einfach dadranhänge bekomme ich Fehlermeldung.
Java:
    public static void main(String args[]){
  
    	Main app = new Main();
    	String filePath = Konstanten.DEFAULT_PATH;
    	app.initializeApplication(filePath);
    	
    }

	private void initializeApplication(String filePath) {
		
		IOVerwaltung ioVerwaltung = new IOVerwaltung();
		this.setSize(Konstanten.GUI_DIMENSION);
		this.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent we){
				System.exit(0);
			}
		});
      topLevelKatalog =  new Katalog("TopLevelKatalog");
      treeModel = new DefaultTreeModel(topLevelKatalog);
      if(filePath != null){
    	  ioVerwaltung.baumEinlesen(topLevelKatalog, filePath);
      }
      jTree = new JTree(treeModel);
      jTree.getSelectionModel().setSelectionMode(TreeSelectionModel
                                                   .DISCONTIGUOUS_TREE_SELECTION);
      jTree.setEditable(true);
      JScrollPane jScrollPane = new JScrollPane(jTree);
      this.add(jScrollPane, BorderLayout.CENTER);
      
      this.setVisible(true);
     topInset = this.getInsets().top;
      
	}
   
	
	
	private void createMenus(){
		JMenuBar menuBar = new JMenuBar();
		
		JMenu menuVerwalten = new JMenu("Kataloge verwalten");
		JMenuItem jmiEinlesen = getJmiKatalogEinlesen();
		menuVerwalten.add(jmiEinlesen);
		
		JMenuItem jmiLaden = getJmiKatalogLaden();
		menuVerwalten.add(jmiLaden);
		menuVerwalten.addSeparator();
		
		
		JMenuItem jmiSaveAs = getJmiSpeichernUnter();
		menuVerwalten.add(jmiSaveAs);

mfg
Amin
 
Ich kann createMenus(); nicht einfach in initializeApplication(String filePath) aufrufen..
at java.awt.Container.add(Container.java:365)
at javax.swing.JPopupMenu.add(JPopupMenu.java:264)
at javax.swing.JMenu.add(JMenu.java:562)
at lernhefte.jav08.lektion2.copy.Main.createMenus(Main.java:89)
at lernhefte.jav08.lektion2.copy.Main.initializeApplication(Main.java:78)
at lernhefte.jav08.lektion2.copy.Main.main(Main.java:48)

Ich könnte als Alternative createMenus() direkt in der Main aufrufen, ist aber leider hier nicht der Sinn der Sache..
kennst du eine Lösung ?
 
Zuletzt bearbeitet:
Ich kann createMenus(); nicht einfach in initializeApplication(String filePath) aufrufen..
sorry, diesen Satz verstehe ich nicht.

Die Methode createMenus(); ist unvollständig. Kannst du bitte noch den Rest dieser Methode posten? Warum erzeugst du darin ein JMenu/eine JMenuBar und fügst sie nirgendwo hinzu?

Die Zeilen 89 und 78 existieren in dem von dir geposteten Code nicht. Welche Zeilen sind das denn?
 
Sorry bin paar tage weggewesen, hier ist die Komplette Main-Klasse.
mir fehlt was um das Menü anzeigen zu lassen aber was ?
Java:
package lernhefte.jav08.lektion2.copy;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ListIterator;

import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;

public class Main extends JFrame {

	private static final long serialVersionUID = 1L;
    
    private String defaultPath = "H:/Java/Lernhefte/JAV08";
    private String indent ="      ";
    private JTextArea jtextArea;
    private static int topInset;
    //GUI Objekte
    private JTree jTree;
    //Model-Objekte
    private DefaultTreeModel treeModel;
    private Katalog topLevelKatalog;
    private static int getTopInset() { return topInset; } 
    private Action actAddKat, actAddDoc, actCopy, actCut, actPaste, actDelete, actRename;
    
    public Main(){
    	super("Medienverwaltung");
    }
    public static void main(String args[]){
  
    	Main app = new Main();
    	String filePath = Konstanten.DEFAULT_PATH;
    	app.initializeApplication(filePath);
    	app.createMenus();
    	
    }

	private void initializeApplication(String filePath) {
		
		
		IOVerwaltung ioVerwaltung = new IOVerwaltung();
		this.setSize(Konstanten.GUI_DIMENSION);
		this.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent we){
				System.exit(0);
			}
		});
      topLevelKatalog =  new Katalog("TopLevelKatalog");
      treeModel = new DefaultTreeModel(topLevelKatalog);
      if(filePath != null){
    	  ioVerwaltung.baumEinlesen(topLevelKatalog, filePath);
      }
      jTree = new JTree(treeModel);
      jTree.getSelectionModel().setSelectionMode(TreeSelectionModel
                                                   .DISCONTIGUOUS_TREE_SELECTION);
      jTree.setEditable(true);
      JScrollPane jScrollPane = new JScrollPane(jTree);
      this.add(jScrollPane, BorderLayout.CENTER);
      
      this.setVisible(true);
     
     topInset = this.getInsets().top;
     createMenus();
      
	}
   
	
	
	private  void createMenus(){
		JMenuBar menuBar = new JMenuBar();
		
		JMenu menuVerwalten = new JMenu("Kataloge verwalten");
		JMenuItem jmiEinlesen = getJmiKatalogEinlesen();
		menuVerwalten.add(jmiEinlesen);
		
		JMenuItem jmiLaden = getJmiKatalogLaden();
		menuVerwalten.add(jmiLaden);
		menuVerwalten.addSeparator();
		
		
		JMenuItem jmiSaveAs = getJmiSpeichernUnter();
		menuVerwalten.add(jmiSaveAs);
		
		JMenuItem jmiSave = getJmiSpeichern();
		menuVerwalten.add(jmiSave);
		menuVerwalten.addSeparator();
		
		defineActionKatalogErgänzen();
		menuVerwalten.add(actAddKat);
		
		defineActionDokumentErgänzen();
		menuVerwalten.add(actAddDoc);
		
		JMenuItem jmiSuchen = getJmiDokumentSuchen();
		menuVerwalten.add(jmiSuchen);
		
		JMenu menuBearbeiten = new JMenu("Knoten bearbeiten");
		
		defineActionKopieren();
		menuBearbeiten.add(actCopy);
		
		defineActionAusschneiden();
		menuBearbeiten.add(actCut);
		
		defineActionEinfügen();
		actPaste.setEnabled(false);
		menuBearbeiten.add(actPaste);
		
		defineActionLöschen();
		menuBearbeiten.add(actDelete);
		
		defineActionKnotennameÄndern();
		menuBearbeiten.add(actRename);
		
		/*********** Zusammenbau **************/
		menuBar.add(menuVerwalten);
		menuBar.add(menuBearbeiten);
		this.setJMenuBar(menuBar);
		
	}

	private void defineActionKnotennameÄndern() {
		// TODO Auto-generated method stub
		
	}
	private void defineActionLöschen() {
		// TODO Auto-generated method stub
		
	}
	private void defineActionEinfügen() {
		// TODO Auto-generated method stub
		
	}
	private void defineActionAusschneiden() {
		// TODO Auto-generated method stub
		
	}
	private void defineActionKopieren() {
		// TODO Auto-generated method stub
		
	}
	private JMenuItem getJmiDokumentSuchen() {
		// TODO Auto-generated method stub
		return null;
	}
	private void defineActionDokumentErgänzen() {
		// TODO Auto-generated method stub
		
	}
	private void defineActionKatalogErgänzen() {
		// TODO Auto-generated method stub
		
	}
	private JMenuItem getJmiSpeichern() {
		// TODO Auto-generated method stub
		return null;
	}
	private JMenuItem getJmiSpeichernUnter() {
		// TODO Auto-generated method stub
		return null;
	}
	private JMenuItem getJmiKatalogLaden() {
		// TODO Auto-generated method stub
		return null;
	}
	private JMenuItem getJmiKatalogEinlesen() {
		// TODO Auto-generated method stub
		return null;
	}

	
	
		
	}
 
Ich würde sagen, dir fehlen die MemuItems.
Überall wo du ein JMenuItem hinzufügen willst, gibt es eine NullPointerException.

Deine geter-Methoden für die Items solltest du schon noch ausprogrammieren.
 
Zurück