He construido el siguiente JDateChooser:

availFromDate = new JDateChooser();
availFromDate.setDateFormatString("dd/MM/yyyy");
JTextFieldDateEditor dateEditor = (JTextFieldDateEditor)availFromDate.getComponent(1);
dateEditor.setHorizontalAlignment(JTextField.RIGHT);
availFromDate.setSize(new Dimension(50, 0));
availFromDate.add(availablefromT);
calendarP.add(availFromDate);
contentPane.add(calendarP);
frame1.add(contentPane);
frame1.setVisible(true);

Sin embargo, necesito la fecha seleccionada desde el JDateChooser a aparecer en el JTextField se llevará a cabo en. Me doy cuenta de que debe haber un getDate() método en cuestión, aunque no estoy seguro de cómo implementarlo.

¿Cómo puedo obtener la fecha y mostrarlo en el campo de texto en el formato de dd/MM/aaaa?

Edición:

He intentado lo siguiente después de ver sugerencias:

  SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
  String date = sdf.format(availFromDate.getDate());
  availablefromT.setText(date);

Aunque, ahora estoy haciendo un NullPointerException. Alguien sabe por qué? Parece que la preocupación de este: String date = sdf.format(availFromDate.getDate());

El Error(s):

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.util.Calendar.setTime(Calendar.java:1770)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
    at java.text.DateFormat.format(DateFormat.java:345)
    at Controller.makeCustEnquiryGUI(Controller.java:2061)

Ejemplo:

import com.toedter.calendar.JDateChooser;
import com.toedter.calendar.JTextFieldDateEditor;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import javax.swing.*;
import java.util.*;

public class CalendarTest {

    private JFrame chooseCruiseFrame;
    private JDateChooser availFromDate;
    private JTextField availablefromT;
    private JPanel contentPane;
    private JPanel centerP;

    public static void main(String[] args) {
        new CalendarTest();
    }

    public CalendarTest() {

        ////////////Creating Frame
        chooseCruiseFrame = new JFrame("");
        chooseCruiseFrame.setSize(300, 200);
        chooseCruiseFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        chooseCruiseFrame.setVisible(true);

        ////////////Creating contentPane
        contentPane = new JPanel(new GridLayout(0, 1));
        contentPane.setBackground(new java.awt.Color(255, 255, 255));
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        ////////////Creating CenterP
        centerP = new JPanel();
        centerP.setBackground(new java.awt.Color(255, 255, 255));
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        //Available From Calendar
        JLabel availF = new JLabel("Available From:");
        centerP.add(availF);
        contentPane.add(centerP);
        availablefromT = new JTextField(11);
        centerP.add(availablefromT);
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        availFromDate = new JDateChooser();
        JTextFieldDateEditor dateEditor = (JTextFieldDateEditor) availFromDate.getComponent(1);
        dateEditor.setHorizontalAlignment(JTextField.RIGHT);
        availFromDate.add(availablefromT);
        centerP.add(availFromDate);
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        //Converting Date to String
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        String date = sdf.format(availFromDate.getDate());
        availablefromT.setText(date);
    }
}
  • La mirada en DateFormat y probar algo antes de volver a nosotros. También, para una mejor ayuda antes, publicar un MCVE (Mínimo Completa, Verificable Ejemplo) o SSCCE (Corto, Autónomo, Corregir Ejemplo).
  • Mi conjetura es que usted comience por llamar JDateChooser#getDate para obtener la Fecha objeto sido gestionado por el campo, a continuación, utilizar un SimpleDateFormat para el formato de la Fecha a sus necesidades
  • BTW – availFromDate.setSize(new Dimension(50, 0)); UNA altura de 0 es ilógico. Pero entonces.. Consulte Debería evitar el uso de set(Preferido|Máximo|Mínimo)Tamaño de métodos en Java Swing? (Sí).
  • Gracias por los comentarios! @AndrewThompson, mis disculpas, me aseguraré de que me SSCCE en el futuro.
  • También, @MadProgrammer, he probado tu sugerencia, y parecen estar funcionando a través de un NullPointerException, he editado mi post para ver el problema, puede que se me haya malinterpretado lo que usted estaba sugiriendo, pero va a ser grande si usted puede ver la edición para identificar mi error. Y por supuesto, gracias por la ayuda!
  • «Aunque, ahora estoy haciendo un NullPointerException. Alguien sabe por qué?» sin ejecutables ejemplo lo que demuestra que su problema podría cualquier cosa
  • availFromDate.getDate() parece estar volviendo un null. Desea proporcionar un ejecutable ejemplo que demuestra su problema?
  • mis disculpas, pensé que me estaban pidiendo la lista de errores. He actualizado mi edición, de nuevo, esperemos que con lo que estás buscando.
  • Cuando llame availFromDate.getDate(), no hay fecha aún no ha sido seleccionado, por lo tanto es null. Es necesario esperar hasta que algo está seleccionada antes de intentar formatear el valor (y usted debe comprobar para un null resultado). También availFromDate.add(availablefromT); no tiene sentido
  • Yo veo el problema ahora que usted ha mencionado. Sugeriría un ‘MouseListener’ para salir de todo esto? También ‘availFromDate.agregar(availablefromT);’ … supuse que esto es necesario a fin de garantizar el JDateChooser es esencialmente conectado el JTextField?
  • «Asumí que esto es necesario para garantizar el JDateChooser es esencialmente conectado el JTextField?» – Ah, no, que ya has agregado availablefromT a su marco y JDateChooser ya tiene su propia JTextField…*»sugeriría un ‘MouseListener’ para salir de todo esto?»* – Nada de eso, me gustaría recomendar un PropertyChangeListener, usted debe escuchar para «fecha» creo

InformationsquelleAutor Freddy | 2015-02-07

6 Comentarios

  1. 2

    el mismo código funciona aquí

       //button    
    
            private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    
            DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
            String date = fmt.format(this.txt_data_ini.getDate()); //jdatechooser
            this.teste.setText(date);
    
        }  
  2. 2

    gran atención para JDateChooser en JCalendar.jar v. 1.4:
    Conseguir el «SelectedDate» de el selector de Fecha en esta manera (después de usar una instrucción para crear un JDataChooser objeto denominado dataEmissioneTextField):

     Date date = dataEmissioneTextField.getDateEditor().getDate();

    En el caso de que queramos elegir una fecha con un agente de escucha específico para guardar el valor de la fecha seleccionada se puede escribir de la siguiente manera:

    dataEmissioneTextField.getDateEditor().addPropertyChangeListener(new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            //TODO Auto-generated method stub
            if ("date".equals(evt.getPropertyName())) {
                //Get the selected date 
                Date date = dataEmissioneTextField.getDateEditor().getDate();
                dataConsegnaTextField.setDate(dataConsegnaTextField.getDateEditor().getDate());
                ordine.setOrderDeliveryDate(date);
                //Draws a Green Border when the date is selected 
                dataEmissioneTextField.setBorder(BorderFactory.createLineBorder(Color.GREEN));
            } else {
                //Draws a Red Border when the date is not selected  
                dataEmissioneTextField.setBorder(BorderFactory.createLineBorder(Color.RED));
            }
        }
    });

    Tenga en cuenta que el JDateChooser admite sólo un PropertyChangeListener.

    Se refiere.

  3. 1

    Utilizar jCalendar, usted puede utilizar el código siguiente.

    String jcalender=calendar.getDate().toString();
    label.setText(jcalender);
  4. 0

    Ok,por lo tanto,usted tiene JDateChooser y JTextField. Usted necesitará algo para provocar el cambio,para esa fecha tendría que ir al texto. Primero de todos, usted necesita para crear una nueva instancia de la clase de objeto. Al hacer esto,llame al método getData(lo encontrarás en la web) y lo almacena en la variable de objeto. A continuación, crear nueva variable que es de cadena y el objeto de almacén de allí. Y por último,mostrar texto en el JTextField.

    Por lo que el código debe tener este aspecto:

    public Object x;
    public string y;
    x = getData(availFromDate);
    y = x.toString();
    JTextField.setText(y);

    Si esto no funciona, intente :

    y = string.valueOf(availFromDate);
    enter code here
  5. 0

    que usted puede hacer como

     public void jdatechooserexample() {
       JDateChooser chooser=new JDateChooser();
        JTextField field=new JTextField(15);
           chooser.addPropertyChangeListener("date",new PropertyChangeListener  () { 
         public void propertyChange(PropertyChangeEvent e){
         JDateChooser chooser=(JDateChooser)e.getSource();
          SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
          field.setText(sdf.format(chooser.getDate()));
    
     }
     });
     }
  6. 0

    JDateChooser Sólo funciona con el evento de cambio de Propiedad. Esto puede ser usado para mostrar el valor en el Jtextfield

        private void jDateChooser1PropertyChange(java.beans.PropertyChangeEvent evt) { 
        if ("date".equals(evt.getPropertyName())) {
                    //Get Date
                    Date date = jDateChooser1.getDateEditor().getDate();
                    SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
    //Define the format of Date
                    String mydate = sf.format(date);
                    jTextField1.setText(mydate);
    
    
                } else {
                   jTextField1.setText(null);
    
                }
        }

Dejar respuesta

Please enter your comment!
Please enter your name here