2010-03-22 3 views
1

J'utilise BigDecimal pour représenter les prix des produits dans une application Java SE.Comment utiliser BigDecimal dans les interfaces graphiques swing?

Quel (s) composant (s) pivotant (s) dois-je utiliser pour permettre à l'utilisateur d'entrer des nombres avec seulement deux décimales et de les lier à une propriété BigDecimal variable/Object. (Vérification que l'utilisateur tape-t-il)?

J'ai joué avec JTextField, JFormattedTextField, NumberFormatter, MaskFormatter mais je n'arrive pas à le résoudre.

Y a-t-il une combinaison et une configuration de ces composants pour cela? ou devrais-je étendre le MaskFormatter, le JTextField, ...?

Répondre

1

Je ne suis pas tout à fait sûr de ce que vous essayez de faire, mais il y a un constructeur BigDecimal qui prend des chaînes en tant que paramètre (par exemple similaire à Double.parseDouble(String s)):

try 
{ 
    BigDecimal decimal = new BigDecimal(yourJTextField.getText()); 
} 
catch (NumberFormatException nfe) 
{ /* error handling */} 

Voir JavaDoc pour BigDecimal pour plus d'informations.

Edit: Si la vérification/validation de l'entrée de l'utilisateur dans le champ de texte, soit vérifier manuellement ou utiliser un validateur (voir Google results for "JTextField Validator")

+0

Les problèmes est que je veux un composant qui ne permet que des nombres, et ne permet 2 décimales dessus: si l'utilisateur tape une lettre, elle n'est pas affichée, si l'utilisateur tape une troisième décimale, elle n'est pas affichée. En plus de cela, je veux lier ce composant à une variable BigDecimal. – mmutilva

+0

Jetez un coup d'œil sur le document InputVerifier puis: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/InputVerifier.html – Tedil

+0

Le InputVerifier agit lorsque le focus change. Je veux contrôler l'entrée lorsque l'utilisateur saisit le composant. – mmutilva

Questions connexes