JFormattedTextField : entrée temps de la valeur de durée
Je veux utiliser un JFormattedTextField
pour permettre à l'utilisateur au moment de l'entrée durée valeurs dans un formulaire. Exemple de valeurs valides sont:
2h 30m
72h 15m
6h
0h
Cependant, je vais avoir peu de succès avec cette. Peut quelqu'un s'il vous plaît suggérer comment ceci peut être accompli? Je suis OK si ce résultat peut être obtenu à l'aide d'un JTextField
.
Merci!
Si il vaut la peine de rien, voici ma tentative:
mFormattedText.setFormatterFactory(
new DefaultFormatterFactory(
new DateFormatter(
new SimpleDateFormat("H mm"))));
Ce sorta fonctionne, sauf que:
- je ne peux pas obtenir
h
etm
apparaissent sous forme de texte brut (j'ai essayé de s'échapper) * - Le nombre d'heures a un max
*: Voir @nanda réponse
OriginalL'auteur bguiz | 2010-02-10
Vous devez vous connecter pour publier un commentaire.
Le code:
OriginalL'auteur nanda
Voici un exemple d'utilisation de
InputVerifier
pour prendre en charge plusieurs formats d'entrée.OriginalL'auteur trashgod
Avez-vous essayé
H'h' mm'm'
?InputVerifier
, trop.Merci de remarquer comment les caractères d'échappement (travaillé), mais ce qui n'a pas de travail était que je veux les utilisateurs à entrer
6h 42m
, et que les résultats enUnparseable date: "6h 42m"
, donc je suis toujours bloqué. Cela ne fonctionne que si l'utilisateur entre quelque chose comme6:42:00 AM
, qui ne fonctionne pas pour moi puisque l'intention est d'entrer dans une durée de temps.pourriez-vous suggérer comment utiliser
InputVerifier
dans ce scénario?Il " bizarre... peut-être que vous devriez partager votre code parce que c'est de travailler avec mon code (voir les autres répondre pour voir le code complet)
OriginalL'auteur nanda
hmm, ce que je pense, c'est que vous pouvez atteindre le même objectif par la création de trois différentes component swing jtextfield pour tous les trois composantes, l'une pour l'HEURE, la MINUTE et la Seconde (s'il est inclus) pour obtenir votre entrée... juste une pensée, vous avez juste à les concaténer si vous avez c'est nécessaire... juste une pensée...
OriginalL'auteur ultrajohn
tl;dr
ISO 8601
Si vous êtes prêt à redéfinir votre choix formats d'entrée, je vous conseille d'utiliser le formats définis par l' ISO 8601 standard.
Le modèle
PnYnMnDTnHnMnS
utilise unP
pour marquer le début, unT
pour séparer les ans-mois-jours portion de toutes les heures-minutes-secondes de la partie.Une heure-et-un-moitié est
PT1H30M
, par exemple.java.temps
La java.les classes de temps utiliser la norme ISO 8601 formats par défaut lors de l'analyse/génération de chaînes. Cela comprend la
Délai
etDurée
classes pour représenter des intervalles de temps qui n'est pas attachée à la timeline.Aller dans l'autre direction, de l'analyse d'une chaîne de caractères.
Voir code en direct en IdeOne.com.
Voir mon semblable Répondre à un Question similaire.
Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.OriginalL'auteur Basil Bourque