Foro sobre Java SE > Guardar fecha 00/00/00 con JCalendar
Lo que sucede es completamente normal.
Del código fuente de JDateChooser de JCalendar.
* Returns the date. If the JDateChooser is started with a null date and no
* date was set by the user, null is returned.
*
* @return the current date
*/
public Date getDate() {
return dateEditor.getDate();
}
una pregunta al que me pueda ayudar como cambio que la fecha que guarde no me aparezca la hora. Este el codigo:
private void Btn_PedidoActionPerformed(java.awt.event.ActionEvent evt) {
String FaltaLlenar = "";
String cant = "";
String tal = "";
String tdd = "";
String obs = "";
boolean Completo = true;
String cli = com_cliente.getSelectedItem().toString();
String mue = com_muestra.getSelectedItem().toString();
String fee = com_entrega.getDate().toLocaleString(); //Esta es la linea que me pone la hora ejemplo (21/05/2014 12:51:21 AM) quiero que aparezca (21/05/2014)
String tic = com_chemisse.getSelectedItem().toString();
String fra = com_franela.getSelectedItem().toString();
if(this.co_cantidades.getText().isEmpty())
{
FaltaLlenar += "Ingrese Cantidades\n";
Completo = false;
}
else
{
cant = this.co_cantidades.getText();
}
if(this.co_talla.getText().isEmpty())
{
FaltaLlenar += "Ingrese Tallas\n";
Completo = false;
}
else
{
tal = this.co_talla.getText();
}
if(this.co_diseno.getText().isEmpty())
{
FaltaLlenar += "Ingrese Tipo de Diseño\n";
Completo = false;
}
else
{
tdd = this.co_diseno.getText();
}
if(this.co_caracteristicas.getText().isEmpty())
{
FaltaLlenar += "Ingrese Observaciones\n";
Completo = false;
}
else
{
obs = this.co_caracteristicas.getText();
}
if(Completo)
{
this.SentenciaSQL = "INSERT INTO pedido (cliente,TipoChemise,TipoFranela,Cantidades,Muestra,Talla,TipoDiseno,Entrega,Observaciones,IngresoPedido) VALUES "
+ "('" + cli + "','" + tic + "','" + fra + "','" + cant + "','" + mue + "','" + tal + "','" + tdd + "','" + fee + "','" + obs + "','" + fec + "')";
this.BaseDeDatos.AgregarDatos(SentenciaSQL);
this.dispose();
}
else
{
JOptionPane.showMessageDialog(null,FaltaLlenar);
}
}
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
http://www.mkyong.com/java/java-date-and-calendar-examples/
Un saludo
Cuando no se seleccione nada puedes guardar "null" y lo tratas al recuperarlo.
LISTO AMIGOS YA PUDE LOGRAR CONFIGURAR LA FECHA QUE ME GUARDE EN EL FORMATO DESEADO ANEXO EL CODIGO CORREGIDO PARA OTROS QUE LO PUEDA USAR
Codigo:
private void Btn_PedidoActionPerformed(java.awt.event.ActionEvent evt) {
String FaltaLlenar = "";
String cant = "";
String tal = "";
String tdd = "";
String obs = "";
boolean Completo = true;
String cli=com_cliente.getSelectedItem().toString();
String mue=com_muestra.getSelectedItem().toString();
//El String fee es el formato para Jcalendar (Corregido) para que se pueda guardar
String fee=new SimpleDateFormat("dd/MM/YYYY").format(com_entrega.getDate());
String tic=com_chemisse.getSelectedItem().toString();
String fra=com_franela.getSelectedItem().toString();
if(this.co_cantidades.getText().isEmpty())
{
FaltaLlenar += "Ingrese Cantidades\n";
Completo = false;
}
else
{
cant = this.co_cantidades.getText();
}
if(this.co_talla.getText().isEmpty())
{
FaltaLlenar += "Ingrese Tallas\n";
Completo = false;
}
else
{
tal = this.co_talla.getText();
}
if(this.co_diseno.getText().isEmpty())
{
FaltaLlenar += "Ingrese Tipo de Diseño\n";
Completo = false;
}
else
{
tdd = this.co_diseno.getText();
}
if(this.co_caracteristicas.getText().isEmpty())
{
FaltaLlenar += "Ingrese Observaciones\n";
Completo = false;
}
else
{
obs = this.co_caracteristicas.getText();
}
if(Completo)
{
this.SentenciaSQL = "INSERT INTO pedido (cliente,TipoChemise,TipoFranela,Cantidades,Muestra,Talla,TipoDiseno,Entrega,Observaciones,IngresoPedido) VALUES "
+ "('" + cli + "','" + tic + "','" + fra + "','" + cant + "','" + mue + "','" + tal + "','" + tdd + "','" + fee + "','" + obs + "','" + fec + "')";
this.BaseDeDatos.AgregarDatos(SentenciaSQL);
this.dispose();
}
else
{
JOptionPane.showMessageDialog(null,FaltaLlenar);
}
}
¡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