Mam JSpinner przy użyciu SpinnerDateModel, który ma początek na 1 stycznia 2010 00: 00: 00.000 data końcowa jest 1 stycznia 2010 00:12 : 34,177. Chciałbym, aby mój JSpinner.DateEditor używał formatu HH: mm: ss.SSS, ale spinner nie obraca się z tym formatem. Obraca się tylko, gdy do formatu dodaje się "yyyy". Jak mogę to obejść?JSpinner.DateEditor musi zawierać rok, nawet jeśli początek i koniec jest w tym samym roku
import java.awt.GridLayout;
import java.util.*;
import javax.swing.*;
public class T extends JPanel {
public T() {
super(new GridLayout(2, 2));
init();
}
private void init() {
Calendar start = GregorianCalendar.getInstance();
Calendar end = GregorianCalendar.getInstance();
start.clear();
end.clear();
start.set(Calendar.YEAR, 2010);
end.set(Calendar.YEAR, 2010);
end.add(Calendar.HOUR_OF_DAY, 12);
SpinnerDateModel m1 =
new SpinnerDateModel(start.getTime(), start.getTime(),
end.getTime(), Calendar.MILLISECOND);
SpinnerDateModel m2 =
new SpinnerDateModel(start.getTime(), start.getTime(),
end.getTime(), Calendar.MILLISECOND);
JSpinner workingSpinner = new JSpinner(m1);
workingSpinner.setEditor(
new JSpinner.DateEditor(workingSpinner,
"yyyy HH:mm:ss.SSS"));
JSpinner notWorkingSpinner = new JSpinner(m2);
notWorkingSpinner.setEditor(
new JSpinner.DateEditor(notWorkingSpinner,
"HH:mm:ss.SSS"));
add(new JLabel("Working"));
add(workingSpinner);
add(new JLabel("!Working"));
add(notWorkingSpinner);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new T());
frame.pack();
frame.setVisible(true);
}
}
Prawidłowo, to się nie kończy o 12: 00: 00.000. Podobnie jak nie ma końca w modelu. – initialZero
Również z jakiegoś powodu twój przykład nie odwraca się wstecz. – initialZero
Zaktualizowany - problem był znacznie głębszy niż początkowo sądziłem. – Andy