M
MVCverstehen
Gast
Hallo,
ich habe mit Google dieses Tutorial gefunden und versuche nun die MVC-Struktur auf mein Projekt umzusetzen.
Ich glaub auch alles richtig gemacht zu haben. Trotzdem erhalte ich immer eine NullPointerException, kann sie mir allersings nicht erklären.
Die Ganze Fehlermeldung sieht so aus:
Exception in thread "main" java.lang.NullPointerException
at view.PetrinetzEditorView.setMenuItemNeuListener(PetrinetzEditorView.java:129)
at controller.PetrinetzEditorController.addListener(PetrinetzEditorController.java:28)
at controller.PetrinetzEditorController.<init>(PetrinetzEditorController.java:19)
at PetrinetzEditorTest.main(PetrinetzEditorTest.java:19)
Die 3 Klassen sehen so aus:
PetrinetzEditorTest
PetrinetzEditorView:
PetrinetzEditorControler:
ich habe mit Google dieses Tutorial gefunden und versuche nun die MVC-Struktur auf mein Projekt umzusetzen.
Ich glaub auch alles richtig gemacht zu haben. Trotzdem erhalte ich immer eine NullPointerException, kann sie mir allersings nicht erklären.
Die Ganze Fehlermeldung sieht so aus:
Exception in thread "main" java.lang.NullPointerException
at view.PetrinetzEditorView.setMenuItemNeuListener(PetrinetzEditorView.java:129)
at controller.PetrinetzEditorController.addListener(PetrinetzEditorController.java:28)
at controller.PetrinetzEditorController.<init>(PetrinetzEditorController.java:19)
at PetrinetzEditorTest.main(PetrinetzEditorTest.java:19)
Die 3 Klassen sehen so aus:
PetrinetzEditorTest
Java:
import view.PetrinetzEditorView;
import model.PetrinetzEditorModel;
import controller.PetrinetzEditorController;
public class PetrinetzEditorTest {
private static PetrinetzEditorModel model;
private static PetrinetzEditorView view;
private static PetrinetzEditorController controller;
/**
* @param args
* Startet die Anwendung
*/
public static void main(String[] args) {
model = new PetrinetzEditorModel();
view = new PetrinetzEditorView();
controller = new PetrinetzEditorController(view, model);
view.createAndShowGUI();
}
}
PetrinetzEditorView:
Java:
package view;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
public class PetrinetzEditorView {
private String windowTitle = "Petrinetz-Editor";
private JMenuItem menuItemNeu;
public void createAndShowGUI() {
JFrame frame = new JFrame(windowTitle);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(createContentPane());
frame.setJMenuBar(createMenuBar());
frame.pack();
frame.setVisible(true);
}
private JPanel createContentPane() {
// Zeichenfläche innerhalb eines Scroll-Panes
JScrollPane scrollPaneForDrawingArea = new JScrollPane(createDrawingArea());
// Linkes Element für contentSplitPane
JTabbedPane tabbedPaneForDrawingArea = new JTabbedPane();
tabbedPaneForDrawingArea.setTabPlacement(JTabbedPane.BOTTOM);
tabbedPaneForDrawingArea.addTab("Tab1", scrollPaneForDrawingArea);
// Rechtes Element für contentSplitPane
JPanel rechteFensterSeite = new JPanel();
rechteFensterSeite.setPreferredSize(new Dimension(150, 600));
JSplitPane contentSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, tabbedPaneForDrawingArea, rechteFensterSeite);
JPanel contentPane = new JPanel();
contentPane.add(contentSplitPane);
return contentPane;
}
private JPanel createDrawingArea() {
// Zeichenfläche TabbedPane (linke Bildschirmhälfte)
JPanel drawingArea = new JPanel();
drawingArea.setPreferredSize(new Dimension(650, 600));
drawingArea.setBackground(Color.WHITE);
return drawingArea;
}
private JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menuDatei = new JMenu("Datei");
menuBar.add(menuDatei);
// MenuItems für JMenu Datei
menuItemNeu = new JMenuItem("Neu");
menuDatei.add(menuItemNeu);
return menuBar;
}
public void setMenuItemNeuListener(ActionListener l) {
menuItemNeu.addActionListener(l);
}
}
PetrinetzEditorControler:
Java:
package controller;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import model.PetrinetzEditorModel;
import view.PetrinetzEditorView;
public class PetrinetzEditorController {
private PetrinetzEditorView view;
private PetrinetzEditorModel model;
public PetrinetzEditorController(PetrinetzEditorView view, PetrinetzEditorModel model) {
this.model = model;
this.view = view;
addListener();
}
public void showView() {
view.createAndShowGUI();
}
private void addListener() {
view.setMenuItemNeuListener(new MenuItemNeuListener());
}
private class MenuItemNeuListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Menueintrag Datei -> Neu ausgewählt");
}
}
}
Zuletzt bearbeitet von einem Moderator: