NullPointerException beim Laden von BMPs

Status
Nicht offen für weitere Antworten.

Stephan

Mitglied
Ich stehe vor einem Problem. Konkret geht es darum, dass ich in ein Label während des Programmverlaufs die Bilder verändere. Immer beim Laden einer BMP allerdings tritt ein NullPointerException-Fehler auf. In der Konsole ausgegeben sieht der Fehler so aus:
Code:
java.lang.NullPointerException
	at unbenannt2.such.show(such.java:320)
	at unbenannt2.such.vorbutton_actionPerformed(such.java:438)
	at unbenannt2.such_vorbutton_actionAdapter.actionPerformed(such.java:528)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Nun war meine erste Vermutung, dass meine Version des Ladens keine BMPs unterstützt, was mir von Leuten die einfach gesagt viel viel mehr Ahnung haben als ich (im Chat) verneint wurde. Somit muss es einen anderen Grund geben.

Nun zu meinem Code:
An dieser Stelle werden die Bilder geladen:
Code:
            try
            {
                pic1.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                pic2.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+1))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                pic3.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+2))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                pic4.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+3))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
            } catch (Exception e)
            {
                JOptionPane.showMessageDialog(null,"Fehler beim Laden der Bilddateien.");
                e.printStackTrace();
            }
Und "getimage(int oindex)" ist dabei eine Methode die den konkreten Dateinamen als String zurückgibt. Hier auch noch diese:
Code:
    public String getimage(int oindex)
    {
        if (suchan)
        {
            File BildJPG = new File(pfad + "bilder/" + suchregister.objekt[oindex].sap + ".JPG");
            File BildBMP = new File(pfad + "bilder/" + suchregister.objekt[oindex].sap + ".bmp");
            if (suchregister.objekt[oindex].sap.equals("00000000")) return pfad + "spacer.gif";
            if (BildJPG.exists()) return pfad + "bilder/" + suchregister.objekt[oindex].sap + ".JPG";
            if (BildBMP.exists()) return pfad + "bilder/" + suchregister.objekt[oindex].sap + ".bmp";
        }
        else
        {
            File BildJPG = new File(pfad + "bilder/" + register.objekt[oindex].sap + ".JPG");
            File BildBMP = new File(pfad + "bilder/" + register.objekt[oindex].sap + ".bmp");
            if (register.objekt[oindex].sap.equals("00000000")) return pfad + "spacer.gif";
            if (BildJPG.exists()) return pfad + "bilder/" + register.objekt[oindex].sap + ".JPG";
            if (BildBMP.exists()) return pfad + "bilder/" + register.objekt[oindex].sap + ".bmp";
        }
        return pfad + "spacer.gif";
    }
Die erste Vermutung, dass er die einfach BMPs nicht finden kann möchte ich eigentlich ausschließen, denn ersten habe ich getestet wie das Programm auf eine nicht-vorhandene Datei reagiert und da kam eine andere Fehlermeldung (javax.imageio.IIOException: Can't read input file!) und zweitens federt das ja theoretisch die getimage-Methode mit der Überprüfung auf file.exists() ab...

Ich weiß ja nicht, ob z.B. dieses getScalledInstance mit den BMPs nicht zurecht kommt oder so, aber deshalb frag ich ja hier nach...

#########

Als letztes nochmals den gesamten Code damit sich solche Fragen erübrigen und ihr selbst schauen könnt wie ich das gemacht hab und auch testen könnt wenn ihr wollt.
##such.java##
Code:
package unbenannt2;

import java.awt.*;
import java.applet.*;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.*;
import java.io.File;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URLDecoder;
import javax.imageio.ImageIO;



public class such extends Applet
{
    tregister register = new tregister();
    tregister suchregister = new tregister();
    tzuordnung zuordnung = new tzuordnung();
    int position = 0;
    int suchposition = 0;
    boolean suchan = false;
    int datazahl;
    int suchdatazahl;
    String pfad;

    BorderLayout borderLayout1 = new BorderLayout();
    JLabel title = new JLabel();
    JLabel info1 = new JLabel();
    JLabel pic1 = new JLabel();
    JLabel info2 = new JLabel();
    JLabel pic2 = new JLabel();
    JLabel info3 = new JLabel();
    JLabel pic3 = new JLabel();
    JLabel info4 = new JLabel();
    JLabel pic4 = new JLabel();
    JRadioButton rbsap = new JRadioButton();
    JRadioButton rbbezeichnung = new JRadioButton();
    JTextField suchfeld = new JTextField();
    JButton suchbutton = new JButton();
    ButtonGroup rbgruppe = new ButtonGroup();
    JButton backbutton = new JButton();
    JButton vorbutton = new JButton();
    JButton zurueckbutton = new JButton();
    JButton anfangbutton = new JButton();
    JButton endebutton = new JButton();
    JLabel navigationslabel = new JLabel();

    public such()
    {
    }

    //Das Applet initialisieren
    public void init()
    {
        pfad = getCodeBase().toString().trim().substring(6) + "data/";
        try
        {
            pfad = URLDecoder.decode(pfad, "utf8");
        } catch (Exception e){}
        loaddata();

        try
        {
            jbInit();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    //Initialisierung der Komponenten
    private void jbInit() throws Exception
    {
        this.setLayout(null);
        this.setBackground(Color.white);

        //Setting für Überschrift (title)
        title.setFont(new java.awt.Font("Arial", Font.BOLD, 12));
        title.setText("Unser Tauschkatalog");
        title.setBounds(new Rectangle(390, 7, 121, 21));
        //Setting für erstes Infofeld (pic1, info1)
        pic1.setBounds(new Rectangle(50, 50, 140, 100));
        info1.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
        info1.setBounds(new Rectangle(50, 160, 170, 130));
        info1.setVerticalAlignment(SwingConstants.TOP);
        info1.setVerticalTextPosition(SwingConstants.TOP);
        //Setting für das zweite Infofeld (pic2, info2)
        pic2.setBounds(new Rectangle(260, 50, 140, 100));
        info2.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
        info2.setBounds(new Rectangle(260, 160, 170, 130));
        info2.setVerticalAlignment(SwingConstants.TOP);
        info2.setVerticalTextPosition(SwingConstants.TOP);
        //Setting für das dritte Infofeld (pic3, info3)
        pic3.setBounds(new Rectangle(470, 50, 140, 100));
        info3.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
        info3.setBounds(new Rectangle(470, 160, 170, 130));
        info3.setVerticalAlignment(SwingConstants.TOP);
        info3.setVerticalTextPosition(SwingConstants.TOP);
        //Setting für das vierte Infofeld (pic4, info4)
        pic4.setBounds(new Rectangle(680, 50, 140, 100));
        info4.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
        info4.setBounds(new Rectangle(680, 160, 170, 130));
        info4.setVerticalAlignment(SwingConstants.TOP);
        info4.setVerticalTextPosition(SwingConstants.TOP);

        //Setting für die Suchabfrage
        rbsap.setText("Suche nach SAPNr");
        rbsap.setBounds(new Rectangle(700, 305, 150, 20));
        rbsap.setBackground(Color.white);
        rbsap.setSelected(true);
        vorbutton.addActionListener(new such_vorbutton_actionAdapter(this));
        zurueckbutton.addActionListener(new such_zurueckbutton_actionAdapter(this));
        anfangbutton.addActionListener(new such_anfangbutton_actionAdapter(this));
        endebutton.addActionListener(new such_endebutton_actionAdapter(this));
        rbgruppe.add(rbsap);
        rbbezeichnung.setText("Suche nach Bezeichnung");
        rbbezeichnung.setBounds(new Rectangle(700, 325, 200, 20));
        rbbezeichnung.setBackground(Color.white);
        rbgruppe.add(rbbezeichnung);
        suchfeld.setText("");
        suchfeld.setBounds(new Rectangle(700, 345, 150, 20));
        suchbutton.setBounds(new Rectangle(700, 375, 80, 25));
        suchbutton.setText("Suche...");
        suchbutton.addActionListener(new such_suchbutton_actionAdapter(this));

        //Zurück zur gesamten DB- Button
        backbutton.setBounds(new Rectangle(320, 375, 260, 25));
        backbutton.setText("Zurück zum gesamten Tauschkatalog");
        backbutton.setVisible(false);
        backbutton.addActionListener(new such_backbutton_actionAdapter(this));

        //Navigation
        navigationslabel.setFont(new java.awt.Font("Arial", Font.BOLD, 11));
        navigationslabel.setText("Navigation:");
        navigationslabel.setBounds(new Rectangle(52, 358, 65, 15));

        anfangbutton.setToolTipText("Erste Seite");
        anfangbutton.setBounds(new Rectangle(50, 375, 50, 25));
        anfangbutton.setText("<<");
        zurueckbutton.setToolTipText("Seite zurück");
        zurueckbutton.setBounds(new Rectangle(110, 375, 42, 25));
        zurueckbutton.setText("<");
        vorbutton.setToolTipText("Seite vor");
        vorbutton.setBounds(new Rectangle(153, 375, 42, 25));
        vorbutton.setText(">");
        endebutton.setToolTipText("Letzte Seite");
        endebutton.setBounds(new Rectangle(205, 375, 50, 25));
        endebutton.setText(">>");


        //Hinzufügen auf die Oberfläche
        this.add(title, null);
        this.add(info1, null);
        this.add(pic1, null);
        this.add(info2, null);
        this.add(pic2, null);
        this.add(info3, null);
        this.add(pic3, null);
        this.add(info4, null);
        this.add(pic4, null);
        this.add(rbsap, null);
        this.add(rbbezeichnung, null);
        this.add(suchfeld, null);
        this.add(suchbutton, null);
        this.add(backbutton, null);
        this.add(vorbutton, null);
        this.add(zurueckbutton, null);
        this.add(anfangbutton, null);
        this.add(endebutton, null);
        this.add(navigationslabel);

        //Anzeigen Angefangen beim 0.
        show(position);
    }

    public void loaddata()
    {
        try
        {
            FileReader load = new FileReader(pfad + "data.txt");
            LineNumberReader line = new LineNumberReader(load);
            String zeile;
            for (int i = 0; i < 2001; i++)
            {
                zeile = line.readLine();
                if (zeile == null)
                {
                    datazahl = i;
                    break;
                }
                register.objekt[i].disponent = zeile.substring(1,4);
                register.objekt[i].sap = zeile.substring(7,15);
                register.objekt[i].info = zeile.substring(18,zeile.length()-1);
            }
            load.close();
        } catch (Exception e)
        {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"Fehler beim Lesen der Datendatei (data.txt).");
        }
        try
        {
            FileReader load = new FileReader(pfad + "dispdata.txt");
            LineNumberReader line = new LineNumberReader(load);
            String zeile;
            for (int i = 0; i < 100; i++)
            {
                zeile = line.readLine();
                if (zeile == null) break;
                zuordnung.disponent[i].nr = zeile.substring(0,3);
                zuordnung.disponent[i].telnr = zeile.substring(4,7);
                zuordnung.disponent[i].name = zeile.substring(8);
            }
            load.close();
        } catch (Exception e)
        {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"Fehler beim Lesen der Datendatei (dispdata.txt).");
        }
    }

    public String getimage(int oindex)
    {
        if (suchan)
        {
            File BildJPG = new File(pfad + "bilder/" + suchregister.objekt[oindex].sap + ".JPG");
//            File BildBMP = new File(pfad + "bilder/" + suchregister.objekt[oindex].sap + ".bmp");
            if (suchregister.objekt[oindex].sap.equals("00000000")) return pfad + "spacer.gif";
            if (BildJPG.exists()) return pfad + "bilder/" + suchregister.objekt[oindex].sap + ".JPG";
//            if (BildBMP.exists()) return pfad + "bilder/" + suchregister.objekt[oindex].sap + ".bmp";
        }
        else
        {
            File BildJPG = new File(pfad + "bilder/" + register.objekt[oindex].sap + ".JPG");
//            File BildBMP = new File(pfad + "bilder/" + register.objekt[oindex].sap + ".bmp");
            if (register.objekt[oindex].sap.equals("00000000")) return pfad + "spacer.gif";
            if (BildJPG.exists()) return pfad + "bilder/" + register.objekt[oindex].sap + ".JPG";
//            if (BildBMP.exists()) return pfad + "bilder/" + register.objekt[oindex].sap + ".bmp";
        }
        return pfad + "spacer.gif";
    }

    public void show(int oindex)
    {
        int dindex = 99;
        if (suchan)
        {
            if (suchposition == 0)
            {
                anfangbutton.setEnabled(false);
                zurueckbutton.setEnabled(false);
            }
            else
            {
                anfangbutton.setEnabled(true);
                zurueckbutton.setEnabled(true);
            }
            if (suchposition > suchdatazahl - 5)
            {
                endebutton.setEnabled(false);
                vorbutton.setEnabled(false);
            }
            else
            {
                endebutton.setEnabled(true);
                vorbutton.setEnabled(true);
            }
            try
            {
                JOptionPane.showMessageDialog(null,getimage(oindex));
                pic1.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                JOptionPane.showMessageDialog(null,getimage(oindex+1));
                pic2.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+1))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                JOptionPane.showMessageDialog(null,getimage(oindex+2));
                pic3.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+2))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                JOptionPane.showMessageDialog(null,getimage(oindex+3));
                pic4.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+3))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
            } catch (Exception e)
            {
                JOptionPane.showMessageDialog(null,"Fehler beim Laden der Bilddateien.");
                e.printStackTrace();
            }
            dindex = zuordnung.getindex(suchregister.objekt[oindex].disponent);
            if (!(suchregister.objekt[oindex].sap.equals("00000000"))) info1.setText("<html>[b]" + suchregister.
objekt[oindex].info + "[/b]

SAP - " + suchregister.objekt[oindex].sap + "
Disponent - " + zuordnung.
disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info1.setText("");
            dindex = zuordnung.getindex(suchregister.objekt[oindex+1].disponent);
            if (!(suchregister.objekt[oindex+1].sap.equals("00000000"))) info2.setText("<html>[b]" + suchregister.
objekt[oindex+1].info + "[/b]

SAP - " + suchregister.objekt[oindex+1].sap + "
Disponent - " + 
zuordnung.disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info2.setText("");
            dindex = zuordnung.getindex(suchregister.objekt[oindex+2].disponent);
            if (!(suchregister.objekt[oindex+2].sap.equals("00000000"))) info3.setText("<html>[b]" + suchregister.
objekt[oindex+2].info + "[/b]

SAP - " + suchregister.objekt[oindex+2].sap + "
Disponent - " + 
zuordnung.disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info3.setText("");
            dindex = zuordnung.getindex(suchregister.objekt[oindex+3].disponent);
            if (!(suchregister.objekt[oindex+3].sap.equals("00000000"))) info4.setText("<html>[b]" + suchregister.
objekt[oindex+3].info + "[/b]

SAP - " + suchregister.objekt[oindex+3].sap + "
Disponent - " + 
zuordnung.disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info4.setText("");
        }
        else
        {
            if (position == 0)
            {
                anfangbutton.setEnabled(false);
                zurueckbutton.setEnabled(false);
            }
            else
            {
                anfangbutton.setEnabled(true);
                zurueckbutton.setEnabled(true);
            }
            if (position > datazahl - 5)
            {
                endebutton.setEnabled(false);
                vorbutton.setEnabled(false);
            }
            else
            {
                endebutton.setEnabled(true);
                vorbutton.setEnabled(true);
            }
            try
            {
                JOptionPane.showMessageDialog(null,getimage(oindex));
                pic1.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                JOptionPane.showMessageDialog(null,getimage(oindex+1));
                pic2.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+1))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                JOptionPane.showMessageDialog(null,getimage(oindex+2));
                pic3.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+2))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
                JOptionPane.showMessageDialog(null,getimage(oindex+3));
                pic4.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex+3))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
            } catch (Exception e)
            {
                JOptionPane.showMessageDialog(null,"Fehler beim Laden der Bilddateien.");
                e.printStackTrace();
            }
            dindex = zuordnung.getindex(register.objekt[oindex].disponent);
            if (!(register.objekt[oindex].sap.equals("00000000"))) info1.setText("<html>[b]" + register.objekt[oindex].
info + "[/b]

SAP - " + register.objekt[oindex].sap + "
Disponent - " + zuordnung.disponent[dindex].
name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info1.setText("");
            dindex = zuordnung.getindex(register.objekt[oindex+1].disponent);
            if (!(register.objekt[oindex+1].sap.equals("00000000"))) info2.setText("<html>[b]" + register.
objekt[oindex+1].info + "[/b]

SAP - " + register.objekt[oindex+1].sap + "
Disponent - " + zuordnung.
disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info2.setText("");
            dindex = zuordnung.getindex(register.objekt[oindex+2].disponent);
            if (!(register.objekt[oindex+2].sap.equals("00000000"))) info3.setText("<html>[b]" + register.
objekt[oindex+2].info + "[/b]

SAP - " + register.objekt[oindex+2].sap + "
Disponent - " + zuordnung.
disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info3.setText("");
            dindex = zuordnung.getindex(register.objekt[oindex+3].disponent);
            if (!(register.objekt[oindex+3].sap.equals("00000000"))) info4.setText("<html>[b]" + register.
objekt[oindex+3].info + "[/b]

SAP - " + register.objekt[oindex+3].sap + "
Disponent - " + zuordnung.
disponent[dindex].name + "
Tel. - " + zuordnung.disponent[dindex].gettelnr() + "</html>");
            else info4.setText("");
        }

    }

    public void suchbutton_actionPerformed(ActionEvent e)
    {
        for (int i = 0; i < 2000; i++)
        {
            if (suchregister.objekt[i].sap.equals("00000000")) break;
            suchregister.objekt[i].resetdata();
        }
        String suchwort = suchfeld.getText();
        suchwort = suchwort.trim();
        if (suchwort.length() == 6) suchwort = "00" + suchwort;
        if (rbsap.isSelected())
        {
        // SAPNr - suche
            if (suchwortpruef(suchwort))
            {
                int oindex = register.suchesap(suchwort);
                if (oindex == -1 || suchwort.equals("00000000")) JOptionPane.showMessageDialog(null, "Die SAPNr wurde im Tauschkatalog nicht gefunden.");
                else
                {
                    suchregister.objekt[0].info = register.objekt[oindex].info;
                    suchregister.objekt[0].sap = register.objekt[oindex].sap;
                    suchregister.objekt[0].disponent = register.objekt[oindex].disponent;
                    backbutton.setVisible(true);
                    suchbutton.setEnabled(false);
                    suchan = true;
                    suchdatazahl = 1;
                    suchposition = 0;
                    show(suchposition);
                }
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Bitte geben Sie eine zulässige SAPNr ein");
            }
        }
        else
        {
        // Bezeichnungs - suche
            int anzahl = 0;
            int oindex = 0;
            do
            {
                oindex = register.sucheinfo(suchwort,oindex);
                if (oindex == -1) break;
                else
                {
                    suchregister.objekt[anzahl].info = register.objekt[oindex].info;
                    suchregister.objekt[anzahl].sap = register.objekt[oindex].sap;
                    suchregister.objekt[anzahl].disponent = register.objekt[oindex].disponent;
                    anzahl++;
                }
            } while(true);
            if (suchregister.objekt[0].sap.equals("00000000")) JOptionPane.showMessageDialog(null, "Die Bezeichnung wurde im Tauschkatalog nicht gefunden.");
            else
            {
                backbutton.setVisible(true);
                suchbutton.setEnabled(false);
                suchan = true;
                suchdatazahl = anzahl;
                suchposition = 0;
                show(suchposition);
            }
        }
    }

    public boolean suchwortpruef(String suchwort)
    {
        if (suchwort.length() != 8) return false;
        for (int i = 0; i < 8; i++)
        {
            if (!(Character.isDigit(suchwort.charAt(i)))) return false;
        }
        return true;
    }

    public void backbutton_actionPerformed(ActionEvent e)
    {
        suchan = false;
        backbutton.setVisible(false);
        suchbutton.setEnabled(true);
        show(position);
    }

    public void vorbutton_actionPerformed(ActionEvent e)
    {
        if (suchan)
        {
            suchposition += 4;
            show(suchposition);
        }
        else
        {
            position += 4;
            show(position);
        }
    }

    public void zurueckbutton_actionPerformed(ActionEvent e)
    {
        if (suchan)
        {
            if (suchposition < 4) suchposition = 0;
            else suchposition-=4;
            show(suchposition);
        }
        else
        {
            if (position < 4) position = 0;
            else position-=4;
            show(position);
        }
    }

    public void anfangbutton_actionPerformed(ActionEvent e)
    {
        if (suchan)
        {
            suchposition = 0;
            show(suchposition);
        }
        else
        {
            position = 0;
            show(position);
        }
    }

    public void endebutton_actionPerformed(ActionEvent e)
    {
        if (suchan)
        {
            suchposition = suchdatazahl - 4;
            show(suchposition);
        }
        else
        {
            position = datazahl - 4;
            show(position);
        }
    }
}


class such_endebutton_actionAdapter implements ActionListener
{
    private such adaptee;
    such_endebutton_actionAdapter(such adaptee)
    {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e)
    {
        adaptee.endebutton_actionPerformed(e);
    }
}


class such_anfangbutton_actionAdapter implements ActionListener
{
    private such adaptee;
    such_anfangbutton_actionAdapter(such adaptee)
    {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e)
    {
        adaptee.anfangbutton_actionPerformed(e);
    }
}


class such_vorbutton_actionAdapter implements ActionListener
{
    private such adaptee;
    such_vorbutton_actionAdapter(such adaptee)
    {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e)
    {
        adaptee.vorbutton_actionPerformed(e);
    }
}


class such_zurueckbutton_actionAdapter implements ActionListener
{
    private such adaptee;
    such_zurueckbutton_actionAdapter(such adaptee)
    {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e)
    {
        adaptee.zurueckbutton_actionPerformed(e);
    }
}


class such_backbutton_actionAdapter implements ActionListener
{
    private such adaptee;
    such_backbutton_actionAdapter(such adaptee)
    {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e)
    {
        adaptee.backbutton_actionPerformed(e);
    }
}


class such_suchbutton_actionAdapter implements ActionListener {
    private such adaptee;
    such_suchbutton_actionAdapter(such adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.suchbutton_actionPerformed(e);
    }
}
##tobjekt.java##
Code:
package unbenannt2;

public class tobjekt
{
    String info;
    String sap;
    String disponent;

    public tobjekt()
    {
        resetdata();
    }

    public void resetdata()
    {
        this.info = "";
        this.sap = "00000000";
        this.disponent = "";
    }
}
##tregister.java##
Code:
package unbenannt2;

public class tregister
{
    tobjekt objekt[] = new tobjekt[2000];
    public tregister()
    {
        for (int i = 0; i < 2000; i++)
        {
             objekt[i] = new tobjekt();
        }
    }

    public int suchesap(String ssap)
    {
        for (int i = 0; i < 2000; i++)
        {
            if (ssap.equals(this.objekt[i].sap)) return i;
        }
        return -1;
    }

    public int sucheinfo(String sbezeichnung, int sindex)
    {
        for (int i = sindex + 1; i < 2000; i++)
        {
            String bezeichnung = this.objekt[i].info.toLowerCase();
            if (bezeichnung.indexOf(sbezeichnung.toLowerCase()) != -1) return i;
        }
        return -1;
    }

}
##tdisponent.java##
package unbenannt2;

public class tdisponent
{
String nr;
String telnr;
String name;

public tdisponent()
{
nr = "";
telnr = "";
name = "";
}

public String gettelnr()
{
try
{
return "(9 25 31) " + telnr.charAt(0) + " " + telnr.substring(1);
} catch (Exception e)
{
return "keine Nr. vorhanden";
}
}
}[/code]
##tzuordnung.java##
Code:
package unbenannt2;

public class tzuordnung
{
    tdisponent disponent[] = new tdisponent[100];
    public tzuordnung()
    {
        for (int i = 0; i < 100; i++)
        {
             disponent[i] = new tdisponent();
        }
    }

    public int getindex(String nr)
    {
        for (int i = 0; i < 99; i++)
        {
            if (nr.equals(disponent[i].nr)) return i;
        }
        return 99;
    }
}

######
Und nochmal wie die Dateien Aufgebaut sind, aus denen ich lade:
##data.txt##
Code:
"Z08";"00103016";"Temperaturfühler"
"Z08";"00103017";"Temperaturfühler K1f2"
"Z09";"00105966";"Steckplatte 10KH20B Speisegerät f. Stromversorgung"
"Z08";"00179665";"SCHWANENHALSMIKROFON M.TASTE(RICHTMIKR.)TM110/TF/V363/2 SH 500*15"
"114";"00192215";"Manometer D=49 0-10bar m Träger"
"Z09";"00198982";"Baustein ARB-P4V 2-2"
"Z09";"00198986";"Impulsübertrager IPAG 422.01.1A"
"114";"00199289";"Gleichrichter GRS 9 / Satz/"
"Z08";"00199296";"Wechselrichter 1kVA IE-HWR 1000/110"
"Z08";"00199297";"Wechselrichter GW-G 110/E 220-G +-24-Wr 1 (1000VA,110-220V, 50Hz)"
"Z08";"00199298";"Wechselrichter IE-HWR 4000/110/50 Hz"
"Z08";"00199299";"Wechselrichter IE-HWR 4000/110/100 Hz"
"Z08";"00199301";"Wechselrichter GW-G110/E220-7,0 Wr-2 , 1500VA, 50 Hz"
"Z08";"00199302";"Wechselrichter IE HWR 3000/110 Gehäuse m. 3 Durchführungen"
"114";"00199305";"Wechselrichter WR 4 kpl"
"Z08";"00199311";"Ladegerät 120V, 16 2/3 Hz + 50Hz"
"Z08";"00199314";"Baueinheit 1 z Ladegerät ELH 511"
"Z08";"00199315";"Baueinheit 2 z Ladegerät ELH 511"
"Z08";"00199316";"Baueinheit 3 z Ladegerät ELH 511"
"Z08";"00199319";"Baueinheit 1 z Ladegerät ELH511.1 f E151"
...
##dispdata.txt##
Code:
114 330 Frau Pörtner
A14 330 Frau Pörtner
E14 330 Frau Pörtner
N14 330 Frau Pörtner
P14 330 Frau Pörtner
U08 330 Frau Pörtner
V08 330 Frau Pörtner
W08 330 Frau Pörtner
Y08 330 Frau Pörtner
Z08 330 Frau Pörtner
116 429 Frau Schikatzki
A16 429 Frau Schikatzki
E16 429 Frau Schikatzki
N16 429 Frau Schikatzki
P16 429 Frau Schikatzki
U09 429 Frau Schikatzki
V09 429 Frau Schikatzki
W09 429 Frau Schikatzki
Y09 429 Frau Schikatzki
Z09 429 Frau Schikatzki
126 419 Frau Hartmann
A26 419 Frau Hartmann
E26 419 Frau Hartmann
N26 419 Frau Hartmann
P26 419 Frau Hartmann
U15 419 Frau Hartmann
V15 419 Frau Hartmann
W15 419 Frau Hartmann
Y15 419 Frau Hartmann
Z15 419 Frau Hartmann

Sooo... zum laden müsste man es noch signieren, aber das wisst ihr ja selbst ;-)
Außerdem ist da natürlich noch der Bilderordner mit den JPGs und BMPs die alle nach dem Muster [SAPNr].JPG bzw. [SAPNr].bmp aufgebaut sind...

Vielen Dank für eure Hilfe!!!
Stephan.

Edit Illuvatar: In der Breite gekürzt
 

mic_checker

Top Contributor
kannst du mal bitte die zeile markieren oder sonst wie hervorheben die die exception verursacht ?

hab gerad nicht viel zeit um mir alles genau anzugucken. aber hast du kontrolliert ob du die Objekte korrekt instanziert hast auf die du zugreifst ? also das du nicht nur deklariert hast u. dann "vergessen" hast das objekt zu erzeugen ?
 

Stephan

Mitglied
Code:
pic1.setIcon(new ImageIcon(ImageIO.read(new File(getimage(oindex))).getScaledInstance(140,100,Image.SCALE_SMOOTH)));
in dieser Zeile im Speziellen aber ansonsten auch in jeder anderen, die grob so aussieht (8 Zeilen existieren in der Form).

Und zur 2. Frage: dann würden doch aber JPGs auch nicht geladen werden - oder?
 

Illuvatar

Top Contributor
Ich hab nix von dem Code außer der Ziele da geschaut, kann alsi auch an was anderem liegen, aber Java kann afaik keine Bmps. Und das würde heißen, dass das ImageIO Viech null zurückgibt, und damit gibts ne NPE.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F NullPointerException aber warum ? Allgemeine Java-Themen 9
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
C NullPointerException Allgemeine Java-Themen 9
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Warum nullPointerException? Allgemeine Java-Themen 13
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
M NullPointerException Allgemeine Java-Themen 4
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException, aber warum? Allgemeine Java-Themen 10
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
A NullPointerException Allgemeine Java-Themen 15
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Stringmanipulationen beim Dateinamen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben