JAVA中的日期和时间选择器[关闭]
Posted
技术标签:
【中文标题】JAVA中的日期和时间选择器[关闭]【英文标题】:date and time picker in JAVA [closed] 【发布时间】:2015-01-19 02:55:15 【问题描述】:我正在寻找日期和时间选择器,但发现只是用于日期选择器且不支持时间的 JCalender
我也发现了这个 http://matrex.sourceforge.net/help/DateTimePickerDialog.html
我喜欢它,因为它简单易用,但我不知道如何获得它或在哪里可以找到它
【问题讨论】:
检查这个线程***.com/questions/654342/…第二个答案有一个完整的例子 我也发现 DateTimePickerDialog 很有趣,所以我搜索了它的实现。在这里:sourceforge.net/p/matrex/code/HEAD/tree/trunk/matrex/matrex/gui/… 【参考方案1】:检查这个线程(使用 swingx JXDatePicker
组件,他扩展了它的功能)
Is there any good and free Date AND Time Picker available for Java Swing?
第二个答案有一个完整的例子
从这里下载 swingx:http://www.java2s.com/Code/Jar/s/Downloadswingxjar.htm
其他帖子中的示例:
import org.jdesktop.swingx.calendar.SingleDaySelectionModel;
import org.jdesktop.swingx.JXDatePicker;
import javax.swing.*;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.DateFormatter;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.*;
import java.awt.*;
public class DateTimePicker extends JXDatePicker
private JSpinner timeSpinner;
private JPanel timePanel;
private DateFormat timeFormat;
public DateTimePicker()
super();
getMonthView().setSelectionModel(new SingleDaySelectionModel());
public DateTimePicker( Date d )
this();
setDate(d);
public void commitEdit() throws ParseException
commitTime();
super.commitEdit();
public void cancelEdit()
super.cancelEdit();
setTimeSpinners();
@Override
public JPanel getLinkPanel()
super.getLinkPanel();
if( timePanel == null )
timePanel = createTimePanel();
setTimeSpinners();
return timePanel;
private JPanel createTimePanel()
JPanel newPanel = new JPanel();
newPanel.setLayout(new FlowLayout());
//newPanel.add(panelOriginal);
SpinnerDateModel dateModel = new SpinnerDateModel();
timeSpinner = new JSpinner(dateModel);
if( timeFormat == null ) timeFormat = DateFormat.getTimeInstance( DateFormat.SHORT );
updateTextFieldFormat();
newPanel.add(new JLabel( "Time:" ) );
newPanel.add(timeSpinner);
newPanel.setBackground(Color.WHITE);
return newPanel;
private void updateTextFieldFormat()
if( timeSpinner == null ) return;
JFormattedTextField tf = ((JSpinner.DefaultEditor) timeSpinner.getEditor()).getTextField();
DefaultFormatterFactory factory = (DefaultFormatterFactory) tf.getFormatterFactory();
DateFormatter formatter = (DateFormatter) factory.getDefaultFormatter();
// Change the date format to only show the hours
formatter.setFormat( timeFormat );
private void commitTime()
Date date = getDate();
if (date != null)
Date time = (Date) timeSpinner.getValue();
GregorianCalendar timeCalendar = new GregorianCalendar();
timeCalendar.setTime( time );
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, timeCalendar.get( Calendar.HOUR_OF_DAY ) );
calendar.set(Calendar.MINUTE, timeCalendar.get( Calendar.MINUTE ) );
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date newDate = calendar.getTime();
setDate(newDate);
private void setTimeSpinners()
Date date = getDate();
if (date != null)
timeSpinner.setValue( date );
public DateFormat getTimeFormat()
return timeFormat;
public void setTimeFormat(DateFormat timeFormat)
this.timeFormat = timeFormat;
updateTextFieldFormat();
public static void main(String[] args)
Date date = new Date();
JFrame frame = new JFrame();
frame.setTitle("Date Time Picker");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DateTimePicker dateTimePicker = new DateTimePicker();
dateTimePicker.setFormats( DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.MEDIUM ) );
dateTimePicker.setTimeFormat( DateFormat.getTimeInstance( DateFormat.MEDIUM ) );
dateTimePicker.setDate(date);
frame.getContentPane().add(dateTimePicker);
frame.pack();
frame.setVisible(true);
【讨论】:
谢谢你MihaiC,你能给我一个例子如何使用这个吗? 第二个答案包含扩展组件的代码。我没有测试过这个。编辑答案以包含它。 非常感谢 MihaiC,我确实使用了 jCalendar flib.sourceforge.net/JCalendar/doc/screenshots.html 它更容易,并且我在您的代码中修复了一些代码,但它可以 100% 工作 很高兴听到它 :) 祝你的项目好运 非常感谢 MihaiC,我还有很多问题,但我已经问过你很多了 :) 再次感谢【参考方案2】:LGoodDatePicker 库包含一个很好的 DateTimePicker 组件。该组件允许用户编辑日期和时间。可以使用可选的“微调器”样式按钮、默认的“时间列表”按钮或同时使用两者来编辑时间。
公平披露:我是主要开发者。
如果需要,也可以单独使用 DatePicker 和 TimePicker 类。 我已经粘贴了下面三个组件的屏幕截图(以及演示应用程序)。
该库可以从项目release page 安装到您的Java 项目中。
项目主页在 Github 上:https://github.com/LGoodDatePicker/LGoodDatePicker。
【讨论】:
以上是关于JAVA中的日期和时间选择器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章