Sie können die SwingX JXDatePicker Komponente erweitern:
„JXDatePicker nur Daten ohne Zeit behandelt Oft wir ein Datum der Benutzer wählen, und eine Zeit zu lassen, brauchen Dies ist ein Beispiel dafür, wie die Verwendung zu machen.. JXDatePicker um Datum und Uhrzeit gemeinsam zu behandeln. "
http://wiki.java.net/twiki/bin/view/Javadesktop/JXDateTimePicker
EDIT: Dieser Artikel aus dem Netz verschwunden, aber als Singleshot entdeckte, ist es nach wie vor in einem Internet-Archiv zur Verfügung. Nur um sicher zu sein, hier ist das vollständige Arbeitsbeispiel:
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.*;
/**
* This is licensed under LGPL. License can be found here: http://www.gnu.org/licenses/lgpl-3.0.txt
*
* This is provided as is. If you have questions please direct them to charlie.hubbard at gmail dot you know what.
*/
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);
}
}
wow so einfach und gut! Danke, dass du großartig bist! – JavaNullPointer
Sie können auch eine Bibliothek wie JDatePicker: http://jdatepicker.org in Verbindung verwenden, um das Datum auszuwählen. – juanheyns
Die Bibliothek [LGoodDatePicker] (https://github.com/LGoodDatePicker/LGoodDatePicker) enthält eine gute ** DateTimePicker-Komponente **. (Sowie die einzelnen DatePicker und TimePicker Klassen). Die drei Komponenten sind einfach und benutzerfreundlich. Hier sind einige Screenshots der Komponenten und der Demo-Anwendung. [Screenshot 1] (http://i.stack.imgur.com/ghDdI.png), [Screenshot 2] (http://i.stack.imgur.com/QXgWE.png). Die Projekthomepage befindet sich unter https://github.com/LGoodDatePicker/LGoodDatePicker. – BlakeTNC