从 JDateChooser 获取日期并显示在 JTextField 中
Obtaining date from JDateChooser and displaying it in JTextField
我构建了以下 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);
但是,我需要从 JDateChooser 中选择的日期出现在保存它的 JTextField 中。我意识到必须涉及 getDate() 方法,但我不确定如何实现它。
如何获取日期并将其以 dd/MM/yyyy 格式显示在文本字段中?
编辑:
我在看到建议后尝试了以下方法:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String date = sdf.format(availFromDate.getDate());
availablefromT.setText(date);
不过,现在我遇到了 NullPointerException。有人知道为什么吗?它似乎与此有关:String date = sdf.format(availFromDate.getDate());
错误:
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)
示例:
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);
}
}
好的,所以,你有 JDateChooser 和 JTextField。您将需要一些东西来触发更改,以便该日期进入文本。首先,您需要创建一个新实例,即对象class。当你这样做时,调用方法 getData(在网上找到它)并将它存储到你的对象变量中。然后你创建一个新的字符串变量并将对象存储在那里。最后,在 JTextField 中显示文本。
所以代码应该是这样的:
public Object x;
public string y;
x = getData(availFromDate);
y = x.toString();
JTextField.setText(y);
如果这不起作用,请尝试:
y = string.valueOf(availFromDate);
enter code 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);
}
你可以这样做
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()));
}
});
}
要使用jCalendar,您可以使用下面的代码。
String jcalender=calendar.getDate().toString();
label.setText(jcalender);
非常关注 JDateChooser 到 JCalendar.jar v.1.4:
以这种方式获取日期选择器的"SelectedDate"(在使用语句创建名为dataEmissioneTextField
的JDataChooser 对象之后):
Date date = dataEmissioneTextField.getDateEditor().getDate();
如果我们想选择一个带有特定监听器的日期来保存所选日期的值,我们可以这样写:
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));
}
}
});
请注意 JDateChooser
仅支持 PropertyChangeListener
。
此致。
JDateChooser 仅适用于 属性 更改事件。这可用于显示 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);
}
}
我构建了以下 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);
但是,我需要从 JDateChooser 中选择的日期出现在保存它的 JTextField 中。我意识到必须涉及 getDate() 方法,但我不确定如何实现它。
如何获取日期并将其以 dd/MM/yyyy 格式显示在文本字段中?
编辑:
我在看到建议后尝试了以下方法:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String date = sdf.format(availFromDate.getDate());
availablefromT.setText(date);
不过,现在我遇到了 NullPointerException。有人知道为什么吗?它似乎与此有关:String date = sdf.format(availFromDate.getDate());
错误:
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)
示例:
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);
}
}
好的,所以,你有 JDateChooser 和 JTextField。您将需要一些东西来触发更改,以便该日期进入文本。首先,您需要创建一个新实例,即对象class。当你这样做时,调用方法 getData(在网上找到它)并将它存储到你的对象变量中。然后你创建一个新的字符串变量并将对象存储在那里。最后,在 JTextField 中显示文本。
所以代码应该是这样的:
public Object x;
public string y;
x = getData(availFromDate);
y = x.toString();
JTextField.setText(y);
如果这不起作用,请尝试:
y = string.valueOf(availFromDate);
enter code 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);
}
你可以这样做
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()));
}
});
}
要使用jCalendar,您可以使用下面的代码。
String jcalender=calendar.getDate().toString();
label.setText(jcalender);
非常关注 JDateChooser 到 JCalendar.jar v.1.4:
以这种方式获取日期选择器的"SelectedDate"(在使用语句创建名为dataEmissioneTextField
的JDataChooser 对象之后):
Date date = dataEmissioneTextField.getDateEditor().getDate();
如果我们想选择一个带有特定监听器的日期来保存所选日期的值,我们可以这样写:
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));
}
}
});
请注意 JDateChooser
仅支持 PropertyChangeListener
。
此致。
JDateChooser 仅适用于 属性 更改事件。这可用于显示 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);
}
}