Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - robysottini

#1
Java / Guardar campo vacío con JCalendar
23 Marzo 2014, 16:33 PM
¡Hola!
Estoy haciendo una aplicación sencilla usando JCalendar que lo descargué de http://toedter.com/jcalendar/.
Tengo un componente JDateChooser que me permite elegir una fecha y un botón Aceptar. Cuando se presiona Aceptar debería suceder esto:
Si se eligió una fecha, entonces  se guarda en una base de datos PostgreSQL.
Si no se ingresó fecha, entonces se guarda la fecha 00/00/00 en la base de datos.

Pero si no ingreso una fecha, Eclipse me da un error en tiempo de ejecución:

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 vista.FormFecha.actionPerformed(FormFecha.java:70)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   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:6505)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)


¿A alguien se le ocurre otra forma de solucionar mi problema? Estuve leyendo, pero no encuentro nadie que tenga que hacer esto. Aunque es sencillo, me está costando varios días encontrar una solución.
Aquí pego el código por si sirve de ayuda:



package vista;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLayeredPane;
import com.toedter.calendar.JDateChooser;
import javax.swing.JButton;

public class FormFecha extends JFrame implements ActionListener {

DateFormat df = DateFormat.getDateInstance();

private JPanel _contentPane;
private JButton _btnAceptar;
private JDateChooser _dateChooser;

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FormFecha frame = new FormFecha();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

public FormFecha() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
_contentPane = new JPanel();
_contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
_contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(_contentPane);

JLayeredPane layeredPane = new JLayeredPane();
_contentPane.add(layeredPane, BorderLayout.CENTER);

_dateChooser = new JDateChooser();
_dateChooser.setBounds(124, 12, 157, 19);
layeredPane.add(_dateChooser);

_btnAceptar = new JButton("Aceptar");
_btnAceptar.setBounds(146, 93, 117, 25);
_btnAceptar.addActionListener(this);
layeredPane.add(_btnAceptar);
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == _btnAceptar) {

String fechaObtenida = df.format(_dateChooser.getDate());
System.out.println("Fecha: " + fechaObtenida);
}
}
}


Saludos,
Roby