问题
I have constructed the following 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);
However, I need the date selected from the JDateChooser to appear in the JTextField it is being held in. I realise there must be a getDate() method involved, though I am not sure how to implement it.
How do I obtain the date and display it within the textfield in the format of dd/MM/yyyy?
Edit:
I have tried the following after seeing suggestions:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String date = sdf.format(availFromDate.getDate());
availablefromT.setText(date);
Though, now I am getting a NullPointerException. Anyone know why? It seems to concern this: String date = sdf.format(availFromDate.getDate());
The 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)
Example:
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);
}
}
回答1:
the same code works here
//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:
great attention for JDateChooser into JCalendar.jar v.1.4:
Getting the "SelectedDate" of the Date picker in this way (after using a statement to create an JDataChooser object named dataEmissioneTextField
):
Date date = dataEmissioneTextField.getDateEditor().getDate();
In the case we want to choose a date with a specific listener to save the value of the selected date we can write as follows:
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));
}
}
});
Note that the JDateChooser
supports just a PropertyChangeListener
.
Regards.
回答3:
To use jCalendar, you can use the code below.
String jcalender=calendar.getDate().toString();
label.setText(jcalender);
回答4:
Ok,so,you have JDateChooser and JTextField. You will need something to trigger the change,so that date would go to text. First of all, you need to create a new instance that is object class. When you do this,call method getData(find it on the web) and store it into your object variable. Then you create new variable that is string and store object there. And last,show text in JTextField.
So the code should look like this:
public Object x;
public string y;
x = getData(availFromDate);
y = x.toString();
JTextField.setText(y);
If this doesnt work, try :
y = string.valueOf(availFromDate);
enter code here
回答5:
you can do like
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:
JDateChooser Only works with Property change event. This can be used to display the value in 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);
}
}
来源:https://stackoverflow.com/questions/28377318/obtaining-date-from-jdatechooser-and-displaying-it-in-jtextfield