Java GUI esempio prenotazione ed errore

di il
3 risposte

Java GUI esempio prenotazione ed errore

Salve mi stavo cimentando nella stesura di una gui come esercizio.
Avevo cercato di renderlo un pò più difficile rispetto alla semplice calcolatrice per vedere se fossi riuscito ad apprendere gli argomenti ed applicarli pure.
L'esercizio è di pura fantasia e consiste nel permettere ad un utente di creare una prenotazione per un luogo. Il tutto sviluppato con Neatbeans(sopratutto il design)
abbiamo la classe prenotazione

package toni.prenotazione;
 import java.util.LinkedList;
/**
 *
 * @author Toni
 */
public class Prenotazione {
    
  String nome,cognome,partenza,destinazione,data, telefono;
    public Prenotazione(String nome, String cognome, String partenza, String destinazione, String data, String telefono) {
       
        this.nome = nome;
        this.cognome = cognome;
        this.partenza = partenza;
        this.destinazione = destinazione;
        this.data = data;
        this.telefono = telefono;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    public void setPartenza(String partenza) {
        this.partenza = partenza;
    }

    public void setDestinazione(String destinazione) {
        this.destinazione = destinazione;
    }

    public void setData(String data) {
        this.data = data;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getNome() {
        return nome;
    }

    public String getCognome() {
        return cognome;
    }

    public String getPartenza() {
        return partenza;
    }

    public String getDestinazione() {
        return destinazione;
    }

    public String getData() {
        return data;
    }

    public String getTelefono() {
        return telefono;
    }
  
    @Override
    public String toString() 
    {
     return "Prenotazione{" + "nome=" + nome + ", cognome=" + cognome + ", partenza=" + partenza + ", destinazione=" + destinazione + ", data=" + data + ", telefono=" + telefono + '}';
    }
    
 public static void main(String[] args) {
      FormPrenotazione form=new FormPrenotazione();
      form.setVisible(true);
      System.out.println("hello");
   
    }
}
   
Una classe buffer

package toni.prenotazione;

import java.util.LinkedList;

/**
 *
 * @author Toni
 */
public class Buffer {
    LinkedList <Prenotazione> cliente;

    public Buffer(LinkedList<Prenotazione> cliente) 
    {
        this.cliente = cliente;
    }
    
    public void clienteadd(Prenotazione c)
    {
        cliente.add(c);
    }

      public  void Stampalista()
   {
        for (Prenotazione cliente1 : cliente) {
            cliente.toString();
        }
   }
}
e il form
package toni.prenotazione;
import com.github.lgooddatepicker.components.*;
import java.util.LinkedList;
import javax.swing.JOptionPane;

/**
 *
 * @author Toni
 */
public class FormPrenotazione extends javax.swing.JFrame {

 LinkedList <Prenotazione> cliente;
DateTimePicker dpicker;
    /**
     * Creates new form FormPrenotazione
     */
    public FormPrenotazione() {
        initComponents();
     
        DatePicker datePicker = new DatePicker();
       telefonoField.add(datePicker);
     
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        nomeField = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        cognomeField = new javax.swing.JTextField();
        partenzaField = new javax.swing.JTextField();
        destinazioneField = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        telefonoField = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        dateField = new com.github.lgooddatepicker.components.DatePicker();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel1.setText("Nome");
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 0, -1, -1));

        nomeField.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nomeFieldActionPerformed(evt);
            }
        });
        getContentPane().add(nomeField, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 0, 180, -1));

        jLabel2.setText("Cognome");
        getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(47, 45, -1, -1));

        jLabel3.setText("Partenza");
        getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(55, 86, -1, -1));

        jLabel4.setText("Destinazione");
        getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(28, 127, 100, -1));

        jLabel5.setText("Telefono");
        getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 210, -1, -1));
        getContentPane().add(cognomeField, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 40, 180, -1));
        getContentPane().add(partenzaField, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 80, 180, -1));
        getContentPane().add(destinazioneField, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 120, 180, -1));

        jLabel6.setText("Data");
        getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 170, -1, -1));
        getContentPane().add(telefonoField, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 210, 180, -1));

        jButton1.setText("Annulla");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(72, 252, -1, -1));

        jButton2.setText("Conferma");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(188, 252, -1, -1));
        getContentPane().add(dateField, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 170, 180, -1));

        pack();
    }// </editor-fold>                        

    
    private void nomeFieldActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
    }                                         

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        String nome=nomeField.getText();
        String cognome=cognomeField.getText();
        String partenza=partenzaField.getText();
        String destinazione=destinazioneField.getText();
        String data=dateField.getText();
        String telefono=telefonoField.getText();
        cliente.add(new Prenotazione(nome, cognome, partenza, destinazione, data, telefono));
      //arrayPrenotazioni[i]=pre;
     // i++;
   JOptionPane.showMessageDialog(null, "La prenotazione e' stata registratacon successo");
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        nomeField.setText("");
        cognomeField.setText("");
        partenzaField.setText("");
        destinazioneField.setText("");
        telefonoField.setText("");
        telefonoField.setText("");
        JOptionPane.showMessageDialog(null," Cancellazione effettuata");
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(FormPrenotazione.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(FormPrenotazione.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(FormPrenotazione.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(FormPrenotazione.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
    
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FormPrenotazione().setVisible(true);
            }
        });
      
    }

    // Variables declaration - do not modify                     
    private javax.swing.JTextField cognomeField;
    private com.github.lgooddatepicker.components.DatePicker dateField;
    private javax.swing.JTextField destinazioneField;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JTextField nomeField;
    private javax.swing.JTextField partenzaField;
    private javax.swing.JTextField telefonoField;
    // End of variables declaration                   
   
}
quando provo ad aggiungere un cliente col bottone aggiungi mi compare questo errore
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at toni.prenotazione.FormPrenotazione.jButton2ActionPerformed(FormPrenotazione.java:118)
	at toni.prenotazione.FormPrenotazione.access$200(FormPrenotazione.java:14)
	at toni.prenotazione.FormPrenotazione$3.actionPerformed(FormPrenotazione.java:96)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6539)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

3 Risposte

  • Re: Java GUI esempio prenotazione ed errore

    All'interno del metodo jButton2ActionPerformed, all'ultima riga vedo
    
    cliente.add( ... );
    
    L'oggetto cliente è la tua LinkedList che è stata dichiarata all'inizio della classe, ma non è mai stata inizializzata.
    Da qui la NPE.
  • Re: Java GUI esempio prenotazione ed errore

    toni1705 ha scritto:


     LinkedList <Prenotazione> cliente;
    Questo cliente non è inizializzato (resta null), questo è il motivo per cui cliente.add( .... ) ovviamente causa il NPE.
  • Re: Java GUI esempio prenotazione ed errore

    Grazie ad entrambi. Siete stati gentilissimi.
    Ma soprattutto molto bravi a cogliere una cosa che a me era sfuggita =)
    Buona Giornata !
Devi accedere o registrarti per scrivere nel forum
3 risposte