Swing NullPointerException bei actionPerformed()

buddahbrot

Mitglied
Hallo,

im Rahmen einer Übungsaufgabe für die Uni soll einer GUI Leben eingehaucht werden. Das Ganze soll nach dem MVC-Konzept geschrieben werden.

Zunächst mal die Quelltexte:

Main.java
Java:
public class Main {
	public static void main(String[] args){
		Controller MTController = new Controller();

	}
}

Controller.java

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Controller implements ActionListener{
	public View ViewView;
	public Model ViewModel;
	
	public Controller(){
		Model ViewModel = new Model();
		View ViewView = new View(this);		
		ViewModel.addObserver(ViewView);
		ViewView.setVisible(true);
	}

	public static void quit(){
		System.exit(0);
	}
	public void actionPerformed(ActionEvent event) { 
		String command = event.getActionCommand();
			//1 = Exit
			//2-9 = SetFilter
			switch(Integer.parseInt(command)){
			case 1: System.exit(0); break;
			case 2: {
				System.out.println(ViewModel.getFileName());//Hier ist der Fehler
				ViewModel.setFilter(0, !(ViewModel.isFilter(0)));
				System.out.println(ViewModel.isFilter(0));
			}; break;
				
	}

	}
}

View.Java

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.Observable;
import java.util.Observer;
import javax.imageio.ImageIO;
import javax.swing.*;

public class View extends JFrame implements Observer{

	public View(Controller Controller){
		//Variablen
		String fileName = "test.jpg";
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		
		//GeneralContainer
		JPanel contentAll = new JPanel();
        contentAll.setLayout(new BorderLayout());
        
		//Menue
		JMenuBar menuBar = new javax.swing.JMenuBar();
		JMenu fileMenu = new javax.swing.JMenu("File");
		JMenu filterMenu = new javax.swing.JMenu("Filters");
		JMenu aboutMenu = new javax.swing.JMenu("About");
		JMenuItem loadFile = new javax.swing.JMenuItem("Load File...");
		JMenuItem exit = new javax.swing.JMenuItem("Exit");
		JMenuItem about = new javax.swing.JMenuItem("About Medientechnik");
		JFrame menu = new javax.swing.JFrame();
		JSeparator trennlinie1 = new JSeparator();
		
		//Checkboxen
		JCheckBoxMenuItem blur = new JCheckBoxMenuItem("Blur");
		JCheckBoxMenuItem distort = new JCheckBoxMenuItem("Distort");
		JCheckBoxMenuItem sharpen = new JCheckBoxMenuItem("Sharpen");
		JCheckBoxMenuItem contrast = new JCheckBoxMenuItem("Contrast");
		JCheckBoxMenuItem invert = new JCheckBoxMenuItem("Invert");
		JCheckBoxMenuItem bw = new JCheckBoxMenuItem("B/W");
		JCheckBoxMenuItem zoom = new JCheckBoxMenuItem("Zoom");
		filterMenu.add(blur);
		filterMenu.add(distort);
		filterMenu.add(sharpen);
		filterMenu.add(contrast);
		filterMenu.add(invert);
		filterMenu.add(bw);
		filterMenu.add(zoom);
		
		//MenuItems einfuegen
		fileMenu.add(loadFile);
		fileMenu.add(trennlinie1);
		fileMenu.add(exit);
		aboutMenu.add(about);
		menuBar.add(fileMenu);
		menuBar.add(filterMenu);
		menuBar.add(aboutMenu);
		menu.add(menuBar);
		this.setJMenuBar(menuBar);
		
		
		//Buttons zu ActionListener hinzufuegen
		exit.addActionListener(Controller);
		blur.addActionListener(Controller);
		distort.addActionListener(Controller);
		sharpen.addActionListener(Controller);
		contrast.addActionListener(Controller);
		invert.addActionListener(Controller);
		bw.addActionListener(Controller);
		zoom.addActionListener(Controller);
		
		//ActionCommands festlegen
		exit.setActionCommand("1");
		blur.setActionCommand("2");
		
		//Bilder
		
		//Variablen
		JPanel pictures = new JPanel();
		pictures.setLayout(new BorderLayout());
		JPanel bild1 = new JPanel();
		JPanel bild2 = new JPanel();	
		bild1.setLayout(new BorderLayout());
		bild2.setLayout(new BorderLayout());
		JLabel original = new JLabel("Original");
		original.setHorizontalAlignment(SwingConstants.CENTER);
		JLabel preview = new JLabel("Preview");
		preview.setHorizontalAlignment(SwingConstants.CENTER);
		JSeparator trennlinie = new JSeparator();
		Image image1 = null;
		Image image2 = null;
		
		//Bilder einlesen
		try {
			image1 = ImageIO.read(new File(fileName));
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("Picture 1 not found");
		}
		try {
			image2 = ImageIO.read(new File(fileName));
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("Picture 2 not found");
		}
		
		//Fallunterscheidung nach Bildgroesse;
		float aspectRatio;
		//breite
		if((image1.getWidth(bild1)>=(toolkit.getScreenSize().width/2) || (image1.getHeight(bild1)>=toolkit.getScreenSize().getHeight()))){
			//TODO blabla
			 aspectRatio = (float) image1.getWidth(bild1)/(float) image1.getHeight(bild1);
			 double eins = (double) image1.getHeight(bild1)/(double) toolkit.getScreenSize().height;
			 double zwei = (double) image1.getWidth(bild1)/(double) toolkit.getScreenSize().width;
			 if(eins <= zwei ){
				 try {
				 		image1 = ImageIO.read(new File(fileName)).getScaledInstance((int) toolkit.getScreenSize().getWidth()/2, (int) ((toolkit.getScreenSize().getWidth()/2)/aspectRatio), Image.SCALE_DEFAULT);
			 		} catch (HeadlessException e) {
			 			e.printStackTrace();
			 		} catch (IOException e) {
			 			e.printStackTrace();
			 		}
			}
			 else{
				 if(image1.getWidth(bild1)>(toolkit.getScreenSize().width)/2){
				 try {
						image1 = ImageIO.read(new File(fileName)).getScaledInstance( (int) toolkit.getScreenSize().width/2, (int) ((toolkit.getScreenSize().getWidth()/2)/aspectRatio), Image.SCALE_DEFAULT);
					} catch (HeadlessException e) {
						e.printStackTrace();
					} catch (IOException e) {
						e.printStackTrace();
					}
				 }
				 else{
					 try {
							image1 = ImageIO.read(new File(fileName)).getScaledInstance( (int) (toolkit.getScreenSize().height * aspectRatio), (int) toolkit.getScreenSize().height, Image.SCALE_DEFAULT);
						} catch (HeadlessException e) {
							e.printStackTrace();
						} catch (IOException e) {
							e.printStackTrace();
						}
				 }
			 }
			
		}

		image2 = image1;
		JLabel picLabel1 = new JLabel(new ImageIcon(image1));
		JLabel picLabel2 = new JLabel(new ImageIcon(image2));
		bild1.add(picLabel1,BorderLayout.NORTH);
		bild1.add(original,BorderLayout.SOUTH);
		bild2.add(picLabel2,BorderLayout.NORTH);
		bild2.add(preview,BorderLayout.SOUTH);
		pictures.add(bild1,BorderLayout.LINE_START);
		pictures.add(bild2,BorderLayout.LINE_END);
		pictures.add(trennlinie,BorderLayout.PAGE_END);
		contentAll.add(pictures,BorderLayout.CENTER);

		
		//Knoepfe/untere leiste
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new FlowLayout());
		JRadioButton radio = new JRadioButton("Alle Effekte");
		JLabel filters = new JLabel("Filters: ");
		JButton random = new JButton("Random");
		random.setEnabled(true);
		JTextField filterDisplay = new JTextField(30);
		filterDisplay.setEditable(false);
		buttonPanel.add(radio);
		buttonPanel.add(random);
		buttonPanel.add(filters);
		buttonPanel.add(filterDisplay);
		buttonPanel.setVisible(true);
		contentAll.add(buttonPanel,BorderLayout.PAGE_END);
		this.setContentPane(contentAll);
		
		this.setTitle("Medientechnik - " + fileName);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		this.pack();
		contentAll.setPreferredSize(new Dimension(toolkit.getScreenSize()));
	}

	@Override
	public void update(Observable o, Object obj) {
		Model m = (Model) o;
		
	}

}

Die GUI soll zwei Bilder anzeigen, auf die später Filter angewandt werden. Die Checkboxen im Menü sollen die aktivierten Filter steuern. Die Filter habe ich im Model als boolean-Werte realisiert, zum einfacheren Zugriff.

Der Fehler entseht in der Controller.Java in der von mir zum Testen eingefügten Zeile
Java:
System.out.println(ViewModel.getFileName());
. Aufgrund der NullPointerException nehme ich an dass das Objekt ViewModel nicht existiert, ich bekomme aber einfach nicht heraus, wie ich aus der actionPerformed() auf das beim Aufruf des Konstruktors der Controller.java erstellte ViewModel zugreifen kann.

Ich bitte um etwas Nachsicht falls das ein dummer Anfängerfehler ist, nur bin ich nunmal einer und wäre für jeden Tip dankbar :)
 

eRaaaa

Top Contributor
Gleiche Fehler wie hier fast jeden zweiten Tag einer macht:
Java:
   public View ViewView;
    public Model ViewModel;
    
    public Controller(){
        Model ViewModel = new Model();
        View ViewView = new View(this);     
        ViewModel.addObserver(ViewView);
        ViewView.setVisible(true);
    }

Das ViewModel in deinem Konstruktor ist ein anderes als welches du oben deklariert hast! Du deklarierst da nämlich ein neues lokales! Lasse das
Code:
Model
und
Code:
View
vorne beim Konstruktor weg !
 
Zuletzt bearbeitet:


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
Jose05 Nullpointerexception bei toArray() AWT, Swing, JavaFX & SWT 9
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
R NullPointerException beim Start des Fensters AWT, Swing, JavaFX & SWT 1
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
ZH1896ZH JavaFX kann NullPointerException nicht auflösen... :( AWT, Swing, JavaFX & SWT 3
M NullPointerException / Controller AWT, Swing, JavaFX & SWT 4
R Swing Java9 NullPointerException bei JComboBox AWT, Swing, JavaFX & SWT 13
L java.lang.NullPointerException - Fehlermeldung AWT, Swing, JavaFX & SWT 2
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
zhermann NullPointerException bei Label.setText() AWT, Swing, JavaFX & SWT 5
it_is_all jLabel.setText -> Char in Str: NullpointerException AWT, Swing, JavaFX & SWT 1
D NullPointerException observableList AWT, Swing, JavaFX & SWT 4
J NullPointerException bei getText() AWT, Swing, JavaFX & SWT 3
S JavaFX NullPointerException bei Versuch ImageView zu ändern AWT, Swing, JavaFX & SWT 1
K JFileChooser NullPointerException AWT, Swing, JavaFX & SWT 7
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
S Swing [CLOSED] NullPointerException bei BorderLayout() AWT, Swing, JavaFX & SWT 8
G Swing NullPointerException und JXImageView AWT, Swing, JavaFX & SWT 4
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
U Swing NullPointerException trotz Referenz auf Textfield & Button AWT, Swing, JavaFX & SWT 6
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
K JavaFX Pfad öffen NullPointerException AWT, Swing, JavaFX & SWT 4
H SWT NullPointerException bei Zugriff auf Variablen des Hauptfensters AWT, Swing, JavaFX & SWT 6
L Event Handling windowAdapter - NullPointerException beim Schließen AWT, Swing, JavaFX & SWT 5
J JTable verursacht NullPointerException.Ratlos. AWT, Swing, JavaFX & SWT 5
C JButton NullPointerException AWT, Swing, JavaFX & SWT 2
Q getGraphics() - NullPointerException AWT, Swing, JavaFX & SWT 8
C NullPointerException im MVC Muster AWT, Swing, JavaFX & SWT 9
V Nullpointerexception (etwas mit thread und jframe) AWT, Swing, JavaFX & SWT 3
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
T Swing Laden eines Icons auf JButton liefert NullPointerException AWT, Swing, JavaFX & SWT 8
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
1 JComponent -> java.lang.NullPointerException AWT, Swing, JavaFX & SWT 13
E java.lang.NullPointerException AWT, Swing, JavaFX & SWT 14
R NullPointerException AWT, Swing, JavaFX & SWT 16
xehpuk Swing NullPointerException: Random-Instanz anfangs nicht initialisiert AWT, Swing, JavaFX & SWT 4
3 Swing NullPointerException in AW Event-0? AWT, Swing, JavaFX & SWT 5
C SWT NullPointerException AWT, Swing, JavaFX & SWT 12
J NullPointerException bei Benutzung vom TableCellRenderer AWT, Swing, JavaFX & SWT 3
A AWT Methodenaufruf "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 4
X NullPointerException beim Einfügen einer JMenuBar AWT, Swing, JavaFX & SWT 4
B NullPointerException bei JFrame AWT, Swing, JavaFX & SWT 2
D JPanel / NullPointerException AWT, Swing, JavaFX & SWT 4
G LookAndFeel Dynamisches Einlesen von LookAndFeels - NullPointerException AWT, Swing, JavaFX & SWT 4
E Login wird durch NullPointerException abgebrochen AWT, Swing, JavaFX & SWT 10
K NullPointerException ohne CodeLink AWT, Swing, JavaFX & SWT 6
L NullPointerException JFreeChart AWT, Swing, JavaFX & SWT 10
F NullPointerException - HILFE!! AWT, Swing, JavaFX & SWT 20
martinyyyy AWT Parameter erzeugen NullpointerException obwohl sie vorhanden sind? AWT, Swing, JavaFX & SWT 4
H Swing NullPointerException in JTable bei vielen Einträgen AWT, Swing, JavaFX & SWT 2
S Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 7
S NullPointerException bei JFileChooser AWT, Swing, JavaFX & SWT 8
X JList Probleme mit NullPointerException AWT, Swing, JavaFX & SWT 3
S NullPointerException bei Aufruf von updateUI() beim JFrame AWT, Swing, JavaFX & SWT 12
Z NullPointerException bei SplashScreen AWT, Swing, JavaFX & SWT 5
C NullPointerException bei Doppelpufferung AWT, Swing, JavaFX & SWT 3
F CardLayout.show() -> NullPointerException AWT, Swing, JavaFX & SWT 4
B NullPointerException bei String vergleich AWT, Swing, JavaFX & SWT 5
K NullPointerException bei JTextField AWT, Swing, JavaFX & SWT 8
L Problem mit "NullPointerException" bei grafischer AWT, Swing, JavaFX & SWT 3
D bei Thread in JComponent malen NullPointerException AWT, Swing, JavaFX & SWT 3
loadbrain JTextFields & java.lang.NullPointerException AWT, Swing, JavaFX & SWT 2
F JProgressBar und NullPointerException AWT, Swing, JavaFX & SWT 4
D javax.swing.Timer bringt NullPointerException AWT, Swing, JavaFX & SWT 4
R TextField bringt NullPointerException bei setVisible() AWT, Swing, JavaFX & SWT 12
A NullPointerException in einer JList AWT, Swing, JavaFX & SWT 7
F Fehler: java.lang.NullPointerException AWT, Swing, JavaFX & SWT 2
S Brauche Hilfe mit JFrame - NullPointerException AWT, Swing, JavaFX & SWT 7
A NullPointerException - warum? AWT, Swing, JavaFX & SWT 5
G NullPointerException bei Aufruf von JTabbedPane.getSelectedI AWT, Swing, JavaFX & SWT 7
G Problem mit NullPointerException AWT, Swing, JavaFX & SWT 11
M JTable verursacht NullPointerException AWT, Swing, JavaFX & SWT 8
M NullPointerException AWT, Swing, JavaFX & SWT 3
J NullPointerException bei getSelectedItem AWT, Swing, JavaFX & SWT 10
G Bekomme immer: NullPointerException AWT, Swing, JavaFX & SWT 2
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
G lastFocusedComponent in ActionPerformed AWT, Swing, JavaFX & SWT 4
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
K Event Handling Mit ActionPerformed und java.io arbeiten AWT, Swing, JavaFX & SWT 3
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
L ActionPerformed Variable übergeben AWT, Swing, JavaFX & SWT 3
J in actionPerformed() Koordinaten ändern AWT, Swing, JavaFX & SWT 9
C actionPerformed mit mehren Aktionen AWT, Swing, JavaFX & SWT 3
C Actionperformed funktioniert nicht AWT, Swing, JavaFX & SWT 13
H actionPerformed aufteilen AWT, Swing, JavaFX & SWT 12
G if-bedinung in actionperformed AWT, Swing, JavaFX & SWT 4
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
S AWT Java actionPerformed "Ok" Button AWT, Swing, JavaFX & SWT 4
V Labeltext ändert sich nicht in actionPerformed AWT, Swing, JavaFX & SWT 5
M actionPerformed() wird zu oft aufgerufen AWT, Swing, JavaFX & SWT 10
M Arbeiten mit actionPerformed(ActionEvent) oder Alternative AWT, Swing, JavaFX & SWT 7
M Swing Anfängerfrage: ActionPerformed AWT, Swing, JavaFX & SWT 3
B actionPerformed Problem AWT, Swing, JavaFX & SWT 3
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
J Aus ActionPerformed ein Plugin starten AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben