G
gast
Gast
hey,
ich sitze gerade das erste mal ernsthaft an nem SpinnerDateModel.
der zweite Konstruktor sieht so aus:
Wunderschön dachte ich, da brauch ich ja für start und end gar kein riesen Calendar-Date gemurxe machen, guck ich mal was mit nem Integer passiert. Ganz einfach, das passiert:
Aber ich habe noch nicht aufgegeben, denn der Konstrukter will ja nur ein Comparable. Das ist schnell geschrieben:
Und da sich das mit nem Date Vergleichen lässt, habe ich jetzt aber keinen Fehler erwartet.
Weit gefehlt:
Ein Blick in DateFormat verrät, dass hier überhaupt nur Subclassen von Date und von Number durch gelassen werden.
Moment mal, DateFormat? Warum will er start und end überhaupt formatieren??
Weiterhin folgt aus diesem (nutzlosen?) Schritt, dass (da gängige Nummern nicht funktionieren, weil man sie nicht mit Date vergleichen kann) man eigentlich nur Daten und nullen übergeben kann.
Nebenbei:
Wenn JSpinner die start und end formatieren will, fängt er ne ParseException ab und ignoriert sie, also muss es doch wohl ohne gehen.
Irgendwie doof, oder? Ich meine, warum macht man dem Programmierer Hoffnungen, indem man nur ein Comparable in den Konstruktor schreibt, aber faktisch doch nur Dates erlaubt?
Oder seh ich das alles ganz falsch und es geht doch (und ich mach was grundlegend falsch)?
ich sitze gerade das erste mal ernsthaft an nem SpinnerDateModel.
der zweite Konstruktor sieht so aus:
Code:
SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
Wunderschön dachte ich, da brauch ich ja für start und end gar kein riesen Calendar-Date gemurxe machen, guck ich mal was mit nem Integer passiert. Ganz einfach, das passiert:
Ok, viel hatte ich auch nicht erwartet, zumal man ja ein long für die Millisekunden braucht. Aber natürlich funzt auch ein Long nich, denn Date ist ja kein Long und löst die gleiche Exception aus.java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.Integer
Aber ich habe noch nicht aufgegeben, denn der Konstrukter will ja nur ein Comparable. Das ist schnell geschrieben:
Code:
private class DC implements Comparable<Date>
...
Und da sich das mit nem Date Vergleichen lässt, habe ich jetzt aber keinen Fehler erwartet.
Weit gefehlt:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(DateFormat.java:281)
at java.text.Format.format(Format.java:140)
at javax.swing.text.InternationalFormatter.valueToString(InternationalFormatter.java:291)
at javax.swing.JSpinner$DateEditor.<init>(JSpinner.java:1038)
at javax.swing.JSpinner$DateEditor.<init>(JSpinner.java:994)
at javax.swing.JSpinner$DateEditor.<init>(JSpinner.java:969)
at javax.swing.JSpinner.createEditor(JSpinner.java:221)
at javax.swing.JSpinner.<init>(JSpinner.java:133)
Ein Blick in DateFormat verrät, dass hier überhaupt nur Subclassen von Date und von Number durch gelassen werden.
Moment mal, DateFormat? Warum will er start und end überhaupt formatieren??
Weiterhin folgt aus diesem (nutzlosen?) Schritt, dass (da gängige Nummern nicht funktionieren, weil man sie nicht mit Date vergleichen kann) man eigentlich nur Daten und nullen übergeben kann.
Nebenbei:
Wenn JSpinner die start und end formatieren will, fängt er ne ParseException ab und ignoriert sie, also muss es doch wohl ohne gehen.
Irgendwie doof, oder? Ich meine, warum macht man dem Programmierer Hoffnungen, indem man nur ein Comparable in den Konstruktor schreibt, aber faktisch doch nur Dates erlaubt?
Oder seh ich das alles ganz falsch und es geht doch (und ich mach was grundlegend falsch)?