Hallo, warum kriege ich immer diese Fehlermeldung obwohl eclipse mir keine fehler an den Code zeigt.
Exception in thread "main" java.lang.NullPointerException
at betrachter.Bildbetrachter.initGUI(Bildbetrachter.java:112)
at betrachter.Bildbetrachter.<init>(Bildbetrachter.java:69)
at betrachter.MainKlasse.main(MainKlasse.java:8)
hier der Code
die MainKlasse
Exception in thread "main" java.lang.NullPointerException
at betrachter.Bildbetrachter.initGUI(Bildbetrachter.java:112)
at betrachter.Bildbetrachter.<init>(Bildbetrachter.java:69)
at betrachter.MainKlasse.main(MainKlasse.java:8)
hier der Code
Code:
package betrachter;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Bildbetrachter extends JFrame {
//für die Schaltflächen
private JButton oeffnen, beenden, oeffnenSchau, beendenSchau;
//für die Eingabe
private JTextField eingabe;
//für die Anzeige
private BildPanel bildAnzeige, bildAnzeigeSchau;
//für die Anpassung
private JCheckBox skalieren;
private JSpinner drehfeld;
private JLabel anzeige;
private int anzeigeDauer;
// die innere Klasse mit dem Listener
class MeinListener implements ActionListener, ChangeListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Ende"))
System.exit(0);
if (e.getActionCommand().equals("Laden"))
BildLaden();
if (e.getActionCommand().equals("LadenSchau"))
bilderschau();
}
public void stateChanged(ChangeEvent e) {
if (e.getSource() instanceof JSpinner) {
anzeigeDauer = (Integer) drehfeld.getValue();
try {
Thread.sleep(anzeigeDauer * 1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}
//der Konstruktor
public Bildbetrachter(String titel) {
super(titel);
initGUI();
}
//die Methode zum Erstellen der Oberfläche
private void initGUI() {
//die Panels für die Register
JPanel registerEinzel = new JPanel();
JPanel registerSchau = new JPanel();
//das TabbedPane
JTabbedPane panelKomplett = new JTabbedPane();
//das Register für die Einzelanzeige
//eine neue Instanz für das Panel mit der Grafik erzeugen
bildAnzeige = new BildPanel();
//die Komponenten erstellen und einbauen
registerEinzel.setLayout(new FlowLayout(FlowLayout.LEFT));
registerEinzel.add(bildAnzeige);
oeffnen = new JButton("Bild laden");
beenden = new JButton("Beenden");
oeffnen.setActionCommand("Laden");
beenden.setActionCommand("Ende");
eingabe = new JTextField(20);
skalieren = new JCheckBox("Anpassen");
registerEinzel.add(new JLabel("Bilddatei: "));
registerEinzel.add(eingabe);
registerEinzel.add(skalieren);
registerEinzel.add(oeffnen);
registerEinzel.add(beenden);
//die Listener verbinden
MeinListener listener = new MeinListener();
oeffnen.addActionListener(listener);
beenden.addActionListener(listener);
drehfeld.addChangeListener(listener);
//das Register für die Bilderschau
//eine neue Instanz für das Panel mit der Grafik erzeugen
bildAnzeigeSchau = new BildPanel();
//die Komponenten erstellen und einbauen
registerSchau.setLayout(new FlowLayout(FlowLayout.CENTER));
registerSchau.add(bildAnzeigeSchau);
JLabel label = new JLabel("Anzeige Dauer");
SpinnerNumberModel modell = new SpinnerNumberModel(5, 0, 10, 1);
JSpinner drehfeld = new JSpinner(modell);
oeffnenSchau = new JButton("Bilder laden");
beendenSchau = new JButton("Beenden");
oeffnenSchau.setActionCommand("LadenSchau");
//die Schaltfläche zum Beenden bekommt dasselbe ActionCommand wie im anderen Register
beendenSchau.setActionCommand("Ende");
registerSchau.add(label);
registerSchau.add(drehfeld);
registerSchau.add(oeffnenSchau);
registerSchau.add(beendenSchau);
//die Listener verbinden
oeffnenSchau.addActionListener(listener);
beendenSchau.addActionListener(listener);
//und nun alles zusammenbauen
panelKomplett.add("Einzelbild", registerEinzel);
panelKomplett.add("Bilderschau", registerSchau);
add(panelKomplett);
//Größe setzen, anzeigen, keine Größenänderungen zulassen und Standard-Verhalten festlegen
setSize(360, 450);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
// die Methoe zum laden eine bildes über den Dialog-fenster
private void BildLaden() {
// einen standart dialog erzeugen
BildbetrachterDialog dialog = new BildbetrachterDialog();
// die rückgabe holen
String datei = dialog.dialogZeigen();
// wenn eine datei ausgewählt wurde laden
if (datei != null) {
bildAnzeige.grafikLaden(datei, skalieren.isSelected());
// den namen der datei im eibgaefeld anzeigen
eingabe.setText(datei);
}
}
// die methode zur anzeige der Bilderschau
private void bilderschau() {
// einen standart dialog erzeugen
BildbetrachterDialog dialogSchau = new BildbetrachterDialog();
// die rückgabe holen und in einem Array von typ file legen
File[] datein = dialogSchau.dialogZeigenMehrere();
// wenn eine datei ausgewählt wurde alle zeigen
if (datein != null) {
for (File datei : datein) {
bildAnzeigeSchau.grafikLaden(datei.toString(), true);
}
}
}
}
die MainKlasse
Code:
package betrachter;
public class MainKlasse {
public static void main(String[] args) {
new Bildbetrachter("Aufgabe 2");
}
}