Avatar billede aslan Nybegynder
09. maj 2002 - 12:23 Der er 1 kommentar og
1 løsning

Får en NullPointerException

Jeg får en NullPointerException når jeg forsøger at få 2 classer til at arbejde sammen via ActionListener??

OpretGæst:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.text.*;


public class OpretGaest extends JFrame implements ActionListener
{



    boolean inAnApplet = true;
    final boolean shouldFill = true;
    final boolean shouldWeightX = true;
    JButton opret,søg,opdater,afslut;
    JTextField gæstNr,forNavn,efterNavn,adresse,telefon,idNr,firma,cvr,rabat;

    JComboBox IDtype;
    String betalingsFormer[] = {"Dankort","Kontant","Regning"};
    JRadioButton privatGæst,erhvervsGæst;

    Gæst hentGæst;

    public OpretGaest()throws IOException {

        Container contentPane = getContentPane();
        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        contentPane.setLayout(gridbag);


        c.fill = GridBagConstraints.HORIZONTAL;



        JLabel skriv = new JLabel("Gæste Nr");
        c.insets = new Insets(0,0,0,0);
        c.gridx = 0;
        c.gridy = 0;
        gridbag.setConstraints(skriv, c);
        contentPane.add(skriv);



        JLabel skriv2 = new JLabel("Fornavn");
        c.insets = new Insets(10,0,0,0);
        c.gridx = 0;
        c.gridy = 1;
        gridbag.setConstraints(skriv2, c);
        contentPane.add(skriv2);



        JLabel skriv3 = new JLabel("Efternavn");
        c.insets = new Insets(10,0,0,0);
        c.gridx = 0;
        c.gridy = 2;
        gridbag.setConstraints(skriv3, c);
        contentPane.add(skriv3);


        JLabel skriv4 = new JLabel("Adresse");
        c.insets = new Insets(10,0,0,0);
        c.gridx = 0;
        c.gridy = 3;
        gridbag.setConstraints(skriv4, c);
        contentPane.add(skriv4);


        JLabel skriv5 = new JLabel("Telefon");
        c.insets = new Insets(10,0,0,0);
        c.gridx = 0;
        c.gridy = 4;
        gridbag.setConstraints(skriv5, c);
        contentPane.add(skriv5);


        gæstNr = new JTextField(10);
        c.insets = new Insets(0,20,0,0);
        c.gridx = 1;
        c.gridy = 0;
        gridbag.setConstraints(gæstNr, c);
        contentPane.add(gæstNr);
        gæstNr.setEditable(false);


        forNavn = new JTextField(10);
        c.insets = new Insets(10,20,0,0);
        c.gridx = 1;
        c.gridy = 1;
        gridbag.setConstraints(forNavn, c);
        contentPane.add(forNavn);
        forNavn.addActionListener(this);

        efterNavn = new JTextField(10);
        c.insets = new Insets(10,20,0,0);
        c.gridx = 1;
        c.gridy = 2;
        gridbag.setConstraints(efterNavn, c);
        contentPane.add(efterNavn);
        efterNavn.addActionListener(this);


        adresse = new JTextField(10);
        c.insets = new Insets(10,20,0,0);
        c.gridx = 1;
        c.gridy = 3;
        gridbag.setConstraints(adresse, c);
        contentPane.add(adresse);
        adresse.addActionListener(this);

        telefon = new JTextField(10);
        c.insets = new Insets(10,20,0,0);
        c.gridx = 1;
        c.gridy = 4;
        gridbag.setConstraints(telefon, c);
        contentPane.add(telefon);
        telefon.addActionListener(this);

        opret = new JButton("Opret");
        c.insets = new Insets(0,300,0,0);
        c.gridx = 2;
        c.gridy = 0;
        gridbag.setConstraints(opret, c);
        contentPane.add(opret);
        opret.addActionListener(this);

        afslut = new JButton("Afslut");
        c.insets = new Insets(10,300,0,0);
        c.gridx = 2;
        c.gridy = 1;
        gridbag.setConstraints(afslut, c);
        contentPane.add(afslut);
        afslut.addActionListener(this);


        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                if (inAnApplet) {
                    dispose();
                } else {
                    System.exit(0);
                }
            }
        });
    }



    public void actionPerformed( ActionEvent e )
    {

          if( e.getSource() == opret );
          {

            gæstNr.setText(""+hentGæst.tællerAntalGæster());
            hentGæst.opretGæst(hentGæst.tællerAntalGæster(),forNavn.getText(),efterNavn.getText(),adresse.getText(), new Integer( telefon.getText() ).intValue() );
          }


    }


}
---------------------------------------------------

Gæst:

import java.util.*;

class Gæst

{

  int gæstNr;

  String fornavn,efternavn,adresse;

  int tlf;

  Hashtable gæsteRegistre = new Hashtable();


  Gæst(int gNr,String f,String ef,String ad,int t)

  {

      gæstNr = gNr;

      fornavn = f;

      efternavn = ef;

      adresse = ad;

      tlf = t;

  }
  int tællerAntalGæster()

  {

      int tæller=0;

      for(Enumeration e = gæsteRegistre.keys(); e.hasMoreElements();)

      {

        String s = (String) e.nextElement();



        Gæst g = (Gæst) gæsteRegistre.get(s);



          tæller++;

      }

      return tæller+1;



  }

  void seOprettedeGæster()

  {

      Gæst nyGæst=null;

      for(Enumeration e = gæsteRegistre.keys(); e.hasMoreElements();)

      {

        String s = (String) e.nextElement();

        nyGæst = (Gæst) gæsteRegistre.get(s);

          //d.println(""+nyGæst);

      }
      // if(nyGæst == null) d.println("Ingen gæster er oprettet på Hotel Lazy");
  }

  void opretGæst(int antalGæster ,String fornavn,String efternavn,String adresse,int tlf)

  {


        Gæst g = new Gæst(antalGæster,fornavn,efternavn,adresse,tlf);

        if(gæsteRegistre.containsKey(fornavn+efternavn+adresse))

        {

      //  d.println("Samme gæst er allerede oprettet før");

        return;

      }

        else

        {

        gæsteRegistre.put(""+fornavn+efternavn+adresse,g);

      // d.println("Gæst oprettet");

      }

  }

  public String toString()

  {

      return "Gæste Nr :"+gæstNr+" Fornavn :"+fornavn+" Efternavn :"+efternavn+

      " Adresse :"+adresse+" TLF :"+tlf;

  }

}
Avatar billede soelvpil Nybegynder
09. maj 2002 - 16:11 #1
Det ser ud som om, at din hentGæst er null.

Du har lidt sammenblanding mellem den enkelte gæst, og samlingen af gæster.

Jeg vil nok foreslå, at du gør opretGæst(),seOprettedeGæster() og gæsteRegistre static, og så i din kode siger
Gæst.opretGæst(.....);
Avatar billede aslan Nybegynder
09. maj 2002 - 18:16 #2
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester