2013-04-06 5 views
1

Mon application Java produit une exception de pointeur nul de JCalander Combobox. J'ai essayé d'attraper l'erreur. Mais cela n'a pas fonctionné. Quelqu'un peut-il m'aider à résoudre ce problème. S'il vous plaît.Exception de pointeur nul de JCalander Combobox

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at java.util.Calendar.setTime(Calendar.java:1106) 
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:955) 
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:948) 
at java.text.DateFormat.format(DateFormat.java:336) 
at org.freixas.jcalendar.JCalendarCombo.paramString(JCalendarCombo.java:780) 
at java.awt.Component.toString(Component.java:8095) 


tbmodel = (DefaultTableModel)tblItmQty.getModel(); 
     System.out.println(calRecvDate.getDate()); 
     try{ 
     if(calRecvDate.getDate()==null){ // Error 
      JOptionPane.showMessageDialog(null, "Please Select Shippment Received Date"); 
      calRecvDate.requestFocus(); 

     }else if(txtShipSs.getText().isEmpty()){ 

/////////////////////////////////////////// /////////////////////

if (inputValidate() == true) { 

       try { 
        String shipId = txtShipId.getText(); 
        String invID = txtInvoice.getText(); 
        String shipSs = txtShipSs.getText(); 
        String address = txtNtfAddress.getText(); 
        String sipper = txtAShipper.getText(); 
        String vessal = txtVessal.getText(); 
        Date rcvDate = calRecvDate.getDate(); // Jcalander 
        String consignee = txtConsigne.getText(); 


        ArrayList<ShippmentItems> shipItems = new ArrayList<ShippmentItems>(); 
        tbmodel = (DefaultTableModel) tblItmQty.getModel(); 

        for (int i = 0; i < tbmodel.getRowCount(); i++) { 
          String itmcode = (String) tbmodel.getValueAt(i, 0); 
          String itmName = (String) tbmodel.getValueAt(i, 1); 
          int qty = (int) tbmodel.getValueAt(i, 2); 
          ShippmentItems shpItems = new ShippmentItems(shipId, itmcode, itmName, qty); 
          shipItems.add(shpItems); 
        } 
+2

Où est le code? – Reimeus

+0

Ne jamais attraper une exception NullPointerException mais plutôt trouver la ligne de code qui la provoque, trouver quelle variable sur cette ligne est nulle, puis remonter dans votre code pour voir pourquoi il n'a pas été initialisé. Si vous avez besoin de plus de notre aide, vous devrez nous en dire plus et nous montrer plus en nous montrant votre code pertinent, en nous disant quelle ligne est la ligne fautive, quelle variable est nulle, et où vous * pensez * vous êtes initialiser cette variable. –

+0

@Reimeus Le code original a été mis à jour. – amal

Répondre

1

Depuis cela jette le NPE:

calRecvDate.getDate()==null 

la variable calRecvDate est nulle, et vous soit devez vérifier si elle est nulle avant de l'utiliser, ou assurez-vous qu'elle n'est pas nulle en remontant dans votre code à l'endroit où vous pensez l'avoir initialisé et résoudre le problème (puisque ce n'est pas moi nitialisé).

Pour vérifier si elle est nulle, vous pouvez faire:

if (calRecvDate != null) { 
    // use the calRecvDate variable here 
} else { 
    // initialize the calRecvDate variable here 

    // or perhaps better, display a JOptionPane error message to the user 
    // that the date hasn't been selected, and exit this method by calling return: 

    return; 
} 

Encore une fois, ne pas utiliser try/blocs catch pour gérer NullPointerExceptions.

+0

Lorsque j'appuie sur le bouton AJOUTER sans sélectionner de date, programmez les fenêtres pop-up avec le message "Veuillez sélectionner la date de réception du shippment", après quoi j'obtiens une erreur de pointeur nul. Je vais mettre à jour le code du bouton Enregistrer ci-dessus. Pour moi, il semble erreur de format date/heure. Pourriez-vous vérifier à nouveau. – amal

+0

Merci beaucoup. Je vais essayer de vous le faire savoir. – amal

+0

@ user2033382: s'il vous plaît voir modifier au code ci-dessus. –