Question

Java utilise période en décimales, par exemple, 1/2 = 0,5

Est-il possible de le faire à la place d'utiliser une virgule, comme dans 1/2 = 0,5? Et de ne pas utiliser des virgules pour des milliers (comme dans cent mille = 100 000), mais l'utilisation d'espace à la place (100 000)?

En ce qui concerne la sortie, je suppose que je pourrais utiliser toutes sortes de fonctions de format de chaîne, mais le problème est entrée (JTable). Certaines colonnes nécessitent double format afin que les utilisateurs doivent entrer quelque chose comme 45,5 et dans ces pièces, ils sont utilisés pour 45,5 :) Merci à l'avance

Mise à jour:

J'ai essayé d'utiliser myTable.setDefaultLocale (Locale.Germany); mais il ne marchait pas. J'ai aussi fait Locale.setDefault (Locale.Germany); @ Fonction principale et il a fait le travail, mais de manière assez stupide: tandis que la cellule est en mode d'édition, vous devez saisir point comme d'habitude, à savoir 45,5 mais après vous appuyez sur Entrée pour confirmer les modifications, il est affiché comme une virgule : 45,5. Je veux dire qu'il utilise des virgules uniquement à des fins d'affichage, mais encore lors de l'édition de son même ol » point.

Est-il possible de le fixer sans écrire modèle de table personnalisé?

Était-ce utile?

La solution

Ainsi, vous voulez essentiellement à convertir localisée représentation String soi-disant dans un format numérique dans un Number/BigDecimal et vice-versa?

Il vous propre tutoriel Sun sur la sujet.

Pour localiser votre application Swing, utilisez JComponent#setDefaultLocale() . Par exemple.

JComponent.setDefaultLocale(Locale.GERMANY);

Autres conseils

Jetez un oeil à Mise en forme et un numéro Parsing pour une Locale :

// Format for CANADA locale
Locale locale = Locale.CANADA;
String string = NumberFormat.getNumberInstance(locale).format(-1234.56); // -1,234.56

// Format for GERMAN locale
locale = Locale.GERMAN;
string = NumberFormat.getNumberInstance(locale).format(-1234.56); // -1.234,56

// Format for the default locale
string = NumberFormat.getNumberInstance().format(-1234.56);


// Parse a GERMAN number
try {
    Number number = NumberFormat.getNumberInstance(locale.GERMAN).parse("-1.234,56");
    if (number instanceof Long) {
        // Long value
    } else {
        // Double value
    }
} catch (ParseException e) {
}

Pour traiter correctement l'entrée, vous pouvez mettre en œuvre votre propre TableModel et remplacer la méthode setValueAt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top