JFormattedTextField : Eingabe von Uhrzeit Dauer Wert
Ich möchte an einem JFormattedTextField
ermöglichen, dass der Benutzer zur Eingabe der Zeit Dauer Werte in ein Formular ein. Beispiel gültige Werte sind:
2h 30m
72h 15m
6h
0h
Jedoch bin ich mit begrenztem Erfolg mit dieser. Kann jemand bitte vorschlagen, wie dies erreicht werden kann? Ich bin OK, wenn dieses Ergebnis erreicht werden kann, mit einem JTextField
als gut.
Dank!
Wenn es etwas Wert, hier mein Aktueller Versuch:
mFormattedText.setFormatterFactory(
new DefaultFormatterFactory(
new DateFormatter(
new SimpleDateFormat("H mm"))));
Diese sorta funktioniert, außer, dass:
- ich kann nicht
h
undm
erscheinen als Klartext (ich habe entkommen) * - Die Anzahl der Stunden, die hat eine max
*: Siehe @nanda Antwort
InformationsquelleAutor bguiz | 2010-02-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code:
InformationsquelleAutor nanda
Hier ist ein Beispiel für die Verwendung
InputVerifier
, um mehrere input-Formate.InformationsquelleAutor trashgod
Haben Sie versucht
H'h' mm'm'
?InputVerifier
auch.Danke für den Hinweis heraus, wie Sie escape-Zeichen (funktioniert), was aber nicht funktioniert hat, war, dass ich möchten, dass Benutzer geben Sie
6h 42m
, und dass die Ergebnisse inUnparseable date: "6h 42m"
, also ich bin immer noch stecken. Dies funktioniert nur, wenn der Benutzer etwas wie6:42:00 AM
gibt, welche doesn T Arbeit für mich, da die Absicht ist, geben Sie eine Dauer aus.könntest du vorschlagen, wie zu verwenden
InputVerifier
in diesem Szenario?Es' seltsam... vielleicht sollte man teilen Sie Ihre vollständigen code, denn das funktioniert mit meinem code (siehe andere Antwort zu sehen, den kompletten code)
InformationsquelleAutor nanda
hmm, was ich denke, ist, dass man das gleiche Ziel erreichen durch die Schaffung von drei verschiedenen JTextField für alle drei Komponenten, eine für die STUNDE, MINUTE und Sekunde (wenn es enthalten ist), um Ihre Eingaben... nur so ein Gedanke, könnte man nur verketten, wenn Sie es nötig hat... nur ein Gedanke...
InformationsquelleAutor ultrajohn
tl;dr
ISO 8601
Wenn Sie bereit sind, neu zu definieren Ihre gewünschten input-Formate, schlage ich vor, den bereits vorhandenen Formate definiert durch die ISO 8601 standard.
Muster
PnYnMnDTnHnMnS
verwendet eineP
markieren den Beginn, einT
zu trennen, alle Jahre-Monate-Tage-Anteil von jedem Stunden-Minuten-Sekunden-Teil.Einer Stunde-und-ein-Hälfte ist
PT1H30M
zum Beispiel.java.Zeit
Java.Zeit-Klassen verwenden ISO-8601-Formate, die standardmäßig beim Parsen/generieren von strings. Dies beinhaltet die
Zeit
undDauer
Klassen für die Darstellung spannt sich von der Zeit nicht an die timeline.In die andere Richtung, Parsen einen string.
Sehen live-code in IdeOne.com.
Sehen meine ähnlichen Antwort zu einem ähnliche Frage.
Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte legacy Datum-Zeit-Klassen wie
java.util.Date
,Calendar
, &" = SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartung-Modus, rät der migration auf die java.Zeit Klassen.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
, und mehr.InformationsquelleAutor Basil Bourque