Maison  >  Article  >  Définir le format décimal en direct sur JOptionPane.showInputDialog

Définir le format décimal en direct sur JOptionPane.showInputDialog

WBOY
WBOYavant
2024-02-13 18:00:11685parcourir

L'éditeur PHP Xiaoxin vous présentera comment définir le format décimal en temps réel sur JOptionPane.showInputDialog. Cette fonctionnalité permet à l'utilisateur de saisir un nombre décimal en direct et de le formater au format souhaité. De cette manière, les utilisateurs peuvent facilement saisir et traiter des valeurs décimales, améliorant ainsi l'expérience utilisateur et l'efficacité du traitement des données. Jetons un coup d'œil aux étapes spécifiques ci-dessous.

Contenu de la question

J'ai un jformattedtextfield ,它具有十进制格式,如果该值低于或等于 0,它会显示 showinputdialog pour le mettre à jour.

Comment configurer un formateur décimal « en direct » pour showinputdialog ?

// Format
NumberFormat format = DecimalFormat.getInstance();
format.setMinimumFractionDigits(2);
format.setMaximumFractionDigits(2);
format.setRoundingMode(RoundingMode.HALF_UP);


// Text field
JFormattedTextField textField = new JFormattedTextField();


// Validation
String regex = "[.,]";
String valueString = textField.getText().split(",")[0].replaceAll(regex, "");
int value = (int) Double.parseDouble(valueString);

while(value <= 0) {
    value = Integer.valueOf(JOptionPane.showInputDialog(parentComponent, "The value must be greater than 0", "Warning", JOptionPane.WARNING_MESSAGE));
}

Je ne sais pas quoi faire.

Solution de contournement

numberformatter (ou maskformatter) pourrait être ce que vous recherchez. ​​p>

NumberFormat format = DecimalFormat.getInstance();
format.setMinimumFractionDigits(2);
format.setMaximumFractionDigits(2);
format.setRoundingMode(RoundingMode.HALF_UP);

NumberFormatter formatter = new NumberFormatter(format); //also check MaskFormatter 
formatter.setValueClass(Integer.class);
formatter.setMinimum(0);
formatter.setMaximum(Integer.MAX_VALUE);
formatter.setAllowsInvalid(false);

// value is be committed on each keystroke instead of focus lost
    formatter.setCommitsOnValidEdit(true);
    
 JFormattedTextField textField  = new JFormattedTextField(formatter);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer