2015-08-24 2 views
0

любой может указать, почему он не позволяет мне сохранить мой файл бронирования? Это дает мне исключение после попытки сохранить имя клиента. Не могу увидеть ошибки, так что не знаю точно, что не так. БлагодаряФайл не сохранен

private void savebookingButtonActionPerformed(java.awt.event.ActionEvent evt) {             
     Booking customerbooking = new Booking(); 
     Customer customerfile = customerbooking.getCustomer(); 

     try { 
      if (custnameTF.getText().equals("")) { 
       throw new EmptyField("Please Insert Customer"); 
      } else { 
       FileOutputStream fos = new FileOutputStream("Bookings/" + custidTF.getText() + ".txt"); 
       ObjectOutputStream oos = new ObjectOutputStream(fos); 

       customerfile.setPersonName((custnameTF.getText())); 
       customerfile.setPersonSurname((custsurnameTF.getText())); 
       customerfile.setPersonID((custidTF.getText())); 
       customerfile.setConsultantname(consnameTF.getText()); 
       customerfile.setConsultantsurname((conssurnameTF.getText())); 
       customerfile.setConsulid(considTF.getText()); 
       customerbooking.setFlightlocation(locationCB.getSelectedItem().toString()); 
       customerbooking.setFlighttime(timeCB.getSelectedItem().toString()); 
       customerbooking.setFlightfee(feeCB.getSelectedItem().toString()); 
       customerbooking.setCar(carRB.isSelected()); 
       customerbooking.setInsurance(insuranceRB.isSelected()); 

       oos.writeObject(customerbooking); 
       oos.close(); 
       fos.close(); 

       custnameTF.setText(""); 
       custsurnameTF.setText(""); 
       custidTF.setText(""); 
       considTF.setText(""); 
       consnameTF.setText(""); 
       conssurnameTF.setText(""); 
       locationCB.setSelectedItem(""); 
       timeCB.setSelectedItem(""); 
       feeCB.setSelectedItem(""); 

       JOptionPane.showMessageDialog(this, "Booking was Saved Successfully!", 
         "Success", JOptionPane.INFORMATION_MESSAGE); 
      } 

     } catch (IOException e) { 
      JOptionPane.showMessageDialog(this, "Booking could not be Saved!", 
        "Error!", JOptionPane.INFORMATION_MESSAGE); 
     } catch (EmptyField ex) { 
      JOptionPane.showMessageDialog(this, "Please Insert Customer", 
        "Error", JOptionPane.INFORMATION_MESSAGE); 
     } 

     dispose(); 

    }         
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at airline.booking.system.BookingFrame.savebookingButtonActionPerformed(BookingFrame.java:357) 
    at airline.booking.system.BookingFrame.access$200(BookingFrame.java:21) 
    at airline.booking.system.BookingFrame$3.actionPerformed(BookingFrame.java:102) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 
    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:6525) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6290) 
    at java.awt.Container.processEvent(Container.java:2234) 
    at java.awt.Component.dispatchEventImpl(Component.java:4881) 
    at java.awt.Container.dispatchEventImpl(Container.java:2292) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
    at java.awt.Container.dispatchEventImpl(Container.java:2278) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:702) 
    at java.awt.EventQueue$3.run(EventQueue.java:696) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:724) 
    at java.awt.EventQueue$4.run(EventQueue.java:722) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:721) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    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) 
+1

Можете ли вы добавить «e.printStackTrace()», чтобы мы могли видеть, откуда исходит ошибка? Кроме того, вы уверены, что путь к файлу существует? – Momo

+1

И исключение ...? – tnw

+0

Исключение добавлено. Спасибо –

ответ

1

При проверке custnameTF.getText() вы на самом деле не проверять, если она равна нулю. Существует различие между пустой строкой и пустой строкой. Добавьте в чек как custnameTF.getText() != null, и это должно выбросить исключение, которое вы запрограммировали, а не перейти к нулевому указателю.

+0

Хороший глаз! Это кажется правильным ответом на меня. –

+0

Мне не имеет смысла, что это проблема. OP сказал, что здесь происходит исключение: 'customerfile.setPersonName ((custnameTF.getText());'. Если 'custnameTF' является' null', то почему он должен прерываться при вызове _second_? Я также не думаю, что TextField вернет 'null' для' getText'. – Tom

+0

Существует также разница между сопоставлением значения и использованием значения. Если поле равно null, вы можете сравнить его с тем, что хотите, но вы не можете установить значение null для другой переменной. Вот почему он не терпит неудачу при первом вызове, а только во втором. – GrizzlyManBear

Смежные вопросы