elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Guardar campo vacío con JCalendar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar campo vacío con JCalendar  (Leído 4,132 veces)
robysottini

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Guardar campo vacío con JCalendar
« en: 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:


Código:
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


En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Guardar campo vacío con JCalendar
« Respuesta #1 en: 23 Marzo 2014, 16:52 pm »

Tienes que formatear la fecha al formato dd/MM/yyyy con format de la clase String.

Código
  1. java.util.Date fechaElegida = _datechooser.getDate();
  2.  
  3. if(fechaElegida != null) {
  4. String fechaString = String.format("%1$td-%1$tm-%1$tY", fechaElegida);
  5. // lo insertas en la tabla
  6. }
  7. else {
  8. // insertas tu fecha "00/00/00
  9. }


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda JCalendar
Java
gasoft 2 6,785 Último mensaje 13 Noviembre 2009, 03:05 am
por Nakp
[SOLUCIONADO]alguien sabe como obtener fecha por separado de un jcalendar
Java
josco 3 9,523 Último mensaje 30 Marzo 2010, 02:27 am
por josco
Cual es el mejor campo o tipo de dato para guardar url's en mysql?
Bases de Datos
kinos 5 13,004 Último mensaje 16 Agosto 2010, 20:09 pm
por kinos
guardar en un campo de una tabla el resultado de una vista mysql
Bases de Datos
kogarasu-maru 0 2,387 Último mensaje 6 Noviembre 2012, 04:28 am
por kogarasu-maru
Visualizar JCalendar en Eclipse.
Java
joseprad 0 2,500 Último mensaje 13 Noviembre 2016, 20:07 pm
por joseprad
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines