JOptionPane manipulation ok, annuler et bouton x
Il y a un problème, je suis confronté à mon JOptionPane
si je ne touche à quoi que ce soit,peu importe ce que je appuyez sur(ok,annuler ou sur le bouton x(le bouton en haut à droite dans la JOptionPane)), il invite moi jusqu'à ce que la clé à une valeur positive. mais je veux seulement l'invite à se produire lorsque j'ai appuyé sur ok.
Si je clique sur annuler ou sur le bouton x(le bouton en haut à droite dans la JOptionPane), il va fermer la JOptionPane
Comment puis-je faire cela?
import javax.swing.JOptionPane;
public class OptionPane {
public static void main(final String[] args) {
int value = 0;
boolean isPositive = false , isNumeric = true;
do {
try {
value = Integer.parseInt(JOptionPane.showInputDialog(null,
"Enter value?", null));
} catch (NumberFormatException e) {
System.out.println("*** Please enter an integer ***");
isNumeric = false;
}
if(isNumeric) {
if(value <= 0) {
System.out.println("value cannot be 0 or negative");
}
else {
System.out.println("value is positive");
isPositive = true;
}
}
}while(!isPositive);
}
}
- voulez-vous fermer la pupup une fois annuler ou x bouton est pressé?
- oui je veux fermer la fenêtre pop-up une fois annuler ou x bouton est pressé . ce que je veux dire, c'est JoptionPane va garder popping out si je n'ai pas la clé de toutes les valeurs , cliquez sur annuler,ok ou sur le bouton x
- donc vous voulez dire pop-up jusqu'à ce que toute valeur positive est entré n'importe où ok, annuler et x bouton est cliqué?
- Avoir une lecture de la Javadoc, il est clair états les valeurs de retour
- essayez mon option et laissez-moi savoir si vous êtes à la recherche pour cela ou non?
}while(!isPositive);
Donner à l'utilisateur unJSpinner
pour sélectionner une valeur. Utiliser unSpinnerNumberModel
à construire..
Vous devez vous connecter pour publier un commentaire.
L'approche de base pour ce qui peut ressembler à ce que je l'ai montré ci-dessous:
Mis à jour après @MadProgrammer commentaire.
JOptionPane.showOptionPane
retouran integer indicating the option chosen by the user, or CLOSED_OPTION if the user closed the dialog
, ce qui signifie quen == 0
serait plus précis, commeJOptionPane.YES_OPTION
pourrait être défini comme quelque chose...?Object initialValue
paramètre dans lashowOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)
méthode.if (n == JOption.OPTION)
déclaration de "décider", l'option qui a été choisie.0
ou1
doncn == JOptionPane.YES_OPTION
sera désormaisn == 5
, qui sera TOUJOURSfalse
...voir...Object[] options
et les éventuels changements futurs dansJOptionPane.OPTION
constantes. Ok, maintenant je vois 🙂 je Vous Remercie pour Votre patience.{"No", "Yes"}
comme une démonstration 😉Ainsi, au lieu de directement de l'analyse de la valeur de retour. Vérifiez d'abord si elle est nulle (l'Utilisateur a Annulé l') puis ne rien faire si pas null avant de l'analyser pour la valeur de l'entier
Il suffit de déplacer le code dans
try
bloc et il n'est pas nécessaire d'utiliser un drapeau justebreak
la boucle infinie une fois nombre positif est entré.Exemple de code: