SpinnerDateModel stard & end nur Date?

Status
Nicht offen für weitere Antworten.
G

gast

Gast
hey,

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:
java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.Integer
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.

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)?
 

gex

Bekanntes Mitglied
Perfekt ist ja bekanntlich nichts.

Aus JSpinner
Lines: 1033-1045:
Code:
 /* TBD - initializing the column width of the text field
 * is imprecise and doing it here is tricky because 
 * the developer may configure the formatter later.
 */	    
try {
	String maxString = formatter.valueToString(model.getStart());
	String minString = formatter.valueToString(model.getEnd());
	ftf.setColumns(Math.max(maxString.length(), minString.length()));
}
catch (ParseException e) {
                // PENDING: hmuller
}

Das DataModel selbst erlaubt eigentlich zum kontrollieren des start-end Bereiches jegliche Comparable Objekte,
welche in der Lage sind (ihre Aufgabe) sich mit einem Date Objekt zu vergleichen.

Aber Prinzipiell ist es doch auch sinnvoll start-end in Form eines Date Objektes anzugeben, wenn dein aktueller Value auch eins ist, oder meinst du nicht?
 
G

gast

Gast
genau die zeilen meinte ich mit
Wenn JSpinner die start und end formatieren will, fängt er ne ParseException ab und ignoriert sie, also muss es doch wohl ohne gehen.
natürlich kann ich auch ein Date anelgen und übergeben, ist nur umständlicher, außerdem würde ich mich in dem konkreten Fall mit weniger zufrieden geben, denn ich will eigentlich nur ein Jahr abfragen, kein genaues Datum.
Oder ist es schon falsch, dafür ein SpinnerDateModel zu nehmen? Ein NumberModel formatiert das zeug ja leider.
 

gex

Bekanntes Mitglied
Benutz einfach das Date Objekt - und somit auch SpinnerDateModel.
Die Date Objekte für Start sowie Ende initialiserst du dann einfach entsprechend (kannst du ja
auch mit Hilfe des Calendar machen).

Wenn der Spinner auf dem GUI nur das Jahr ausgeben soll, mach sowas:
Code:
jSpinner1.setEditor(new JSpinner.DateEditor(jSpinner1,("yyyy")));
 
G

gast

Gast
klar, das mach ich ja auch.

ich lass übrigens jetzt im konstruktor vom DateModel für anfang und ende nullen stehen, und setzte diese erst, nachdem ich den Editor gesetzt habe. Dann habe ich nicht das Problem, dass der Spinner viel zu breit wird, wie wenn ich Dates übergebe, und auch sonst keines der beschriebenen. Find ich zwar affig, dass das nur in der Reihenfolge geht, aber was solls, immerhin funktioniert es jetzt so, wie es soll.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
MiMa Date vs LocalDate/LocalDateTime Java Basics - Anfänger-Themen 13
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
sserio Date Library Frage Java Basics - Anfänger-Themen 9
P "Datestamp" to Date oder Timestamp Java Basics - Anfänger-Themen 15
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
G convert Date to LocalDate Java Basics - Anfänger-Themen 11
G convert Optional<Date> into Optional<LocalDate> Java Basics - Anfänger-Themen 6
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
L Java Date Format ändern Java Basics - Anfänger-Themen 5
B java.util.Date noch zeitgemäß? Java Basics - Anfänger-Themen 6
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
B Date - Umwandlung OffsetDateTime Java Basics - Anfänger-Themen 11
B Date Konvertierung Java Basics - Anfänger-Themen 0
B Date formatieren Java Basics - Anfänger-Themen 13
L Datentypen Date API - diese Woche bestimmen Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
Thallius Date für DatePicker formatieren aber wie? Java Basics - Anfänger-Themen 9
A Vererbungshierachie und java.util.Date Java Basics - Anfänger-Themen 31
agent47 Java 8 Locale Date Time Java Basics - Anfänger-Themen 2
S String zu Date Java Basics - Anfänger-Themen 6
L Java String to date? Java Basics - Anfänger-Themen 2
H Repräsentation von DateTime (Joda) in Java Util Date überführen Java Basics - Anfänger-Themen 3
I Date zu 01.01.<year> setzen Java Basics - Anfänger-Themen 1
H java date-time parser Java Basics - Anfänger-Themen 1
S Date parsen klappt nicht richtig Java Basics - Anfänger-Themen 3
A String to Date parsing Java Basics - Anfänger-Themen 2
M TimeUnit ms nach date convertieren Java Basics - Anfänger-Themen 2
B Date Object mit Millisekunden Ausgabe Java Basics - Anfänger-Themen 8
K Best Practice Date in einem Konstruktor angeben Java Basics - Anfänger-Themen 5
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Date cannot be cast to java.lang.Integer Java Basics - Anfänger-Themen 4
N Change date Format Java Basics - Anfänger-Themen 2
P Date oder Kalender? Was soll man verwenden? Java Basics - Anfänger-Themen 2
M Simple Date Format Java Basics - Anfänger-Themen 2
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
D Java Date/Calendar Problem Java Basics - Anfänger-Themen 4
Kenan89 Java Date List Java Basics - Anfänger-Themen 4
L Date differenz Java Basics - Anfänger-Themen 6
algebraiker TreeMap<Date,Object> navigieren? Java Basics - Anfänger-Themen 24
B Datentypen Date Java Basics - Anfänger-Themen 11
K konvertiere Millisekunden in ein Utc Date Objekt Java Basics - Anfänger-Themen 5
G Date - Calender | "Vergleich" Java Basics - Anfänger-Themen 3
M Mal wieder Probleme mit Date Java Basics - Anfänger-Themen 9
A Datentypen Datum mit "May" zu Date parsen Java Basics - Anfänger-Themen 6
Blindxantos Datentypen Probleme bei util.Date zu sql.Date Java Basics - Anfänger-Themen 5
R Tage subtrahieren von einem Date() Java Basics - Anfänger-Themen 6
I Date um 1 Jahr erhöhen? Java Basics - Anfänger-Themen 17
F GMT für Date Objekte festlegen Java Basics - Anfänger-Themen 5
F Sekunden abschneiden bei Date Java Basics - Anfänger-Themen 4
L int TimeZone für Date Java Basics - Anfänger-Themen 3
N alter mit Date ausrechnen Java Basics - Anfänger-Themen 10
turmaline String zu Date konvertieren -> Unparseable date Java Basics - Anfänger-Themen 5
T java.util.Date Java Basics - Anfänger-Themen 5
C Date() ->das Datum von gestern ausgeben Java Basics - Anfänger-Themen 11
M Datentypen Wie initialisiere ich ein Objekt vom Typ Date? Java Basics - Anfänger-Themen 3
H OOP java.sql.Date does not have a no-arg default constructor Java Basics - Anfänger-Themen 2
L Date subtrahieren? Java Basics - Anfänger-Themen 10
G Date von heute mit Uhrzeit erzeugen Java Basics - Anfänger-Themen 9
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
I Null - Wert bei Date (Mysql) Java Basics - Anfänger-Themen 2
H Date-Objekt um einen Monat "erhöhen" Java Basics - Anfänger-Themen 7
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
P Datum: String in Date umwandeln Java Basics - Anfänger-Themen 7
T mit Typen Date rechnen Java Basics - Anfänger-Themen 6
F java.sql.Date Differenz Java Basics - Anfänger-Themen 3
P Date geht auf UNIX 1 Stunde nach Java Basics - Anfänger-Themen 14
M Date-Problem Java Basics - Anfänger-Themen 3
H Einfaches Date-parse problem Java Basics - Anfänger-Themen 2
Developer_X Date Java Basics - Anfänger-Themen 4
Antoras Daten aus Date lesen Java Basics - Anfänger-Themen 3
G String in Date konvertieren Java Basics - Anfänger-Themen 6
W 2 Date()-Daten vergleichen Java Basics - Anfänger-Themen 6
W String in Date Java Basics - Anfänger-Themen 4
H Date-Object "um eins erhöhen! Java Basics - Anfänger-Themen 4
G Anfänger: Problem mit Date Java Basics - Anfänger-Themen 3
S NullPointerException bei Date.setTime() Java Basics - Anfänger-Themen 3
M 2 Date()-Datum´s vergleichen Java Basics - Anfänger-Themen 9
C Java 7 Date Java Basics - Anfänger-Themen 9
L Timer und Date Java Basics - Anfänger-Themen 2
G SQL Date zu JAVA Date Java Basics - Anfänger-Themen 4
G String in Date casten. Java Basics - Anfänger-Themen 7
G String in Date casten Java Basics - Anfänger-Themen 4
G java.text.parseException: Unparseable Date Java Basics - Anfänger-Themen 7
U java.util.Date to java.sql.Date Java Basics - Anfänger-Themen 2
B JSpinner/Date auslesen Java Basics - Anfänger-Themen 3
S Datum umwandeln: String in Date umwandeln Java Basics - Anfänger-Themen 4
F date und time berechnungen Java Basics - Anfänger-Themen 2
G Formatieren von Date-Objekten Java Basics - Anfänger-Themen 5
J Date-Objekt formatiert als String ausgeben Java Basics - Anfänger-Themen 2
G Date Objekt für aktuelles Datum erzeugen Java Basics - Anfänger-Themen 9
G Objekte vom Typ Date vergleichen Java Basics - Anfänger-Themen 2
P JAVA in Exe Date ausführen Java Basics - Anfänger-Themen 7
B string 2 sql.date() Java Basics - Anfänger-Themen 8
G date in sekunden umwandeln und wieder zurück. Java Basics - Anfänger-Themen 6
A einlesen von date und boolean Java Basics - Anfänger-Themen 3
G String in java.sql.Date umwandeln Java Basics - Anfänger-Themen 4
W Java.mysql.date in GregorianCalender konvertieren Java Basics - Anfänger-Themen 2
W Aus Textfeld ein "MySQL Date" auslesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben