JOptionPane - vérifier la saisie de l'utilisateur et de le prévenir de la fermeture jusqu'à ce que les conditions sont remplies
Svp quelqu'un peut me dire si il existe un moyen pratique d'éviter JOptionPane
à compter de la clôture après avoir cliqué sur OK, à moins que les conditions pour l'utilisateur, les champs d'entrée sont remplies?
Ou dois-je pas d'autre choix que d'utiliser JFrame
?
Ma logique de validation jusqu'à présent. Ne semble pas fonctionner parce que les boutons sont cliquables pour une raison...
final JDialog dialog3 = new JDialog(OmniGUI.getFrame(), "Create new Node - id:" + newNodeID);
dialog3.setContentPane(theOPane);
dialog3.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
theOPane.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent e) {
if(e.getSource() == theOPane){
String val = (String) ((JOptionPane) e.getSource()).getValue();
if(val=="Create"){
System.out.println("Checking content");
if(!valid){
System.out.println("closing the window");
dialog3.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog3.removeAll();
dialog3.dispatchEvent(new WindowEvent(dialog3, WindowEvent.WINDOW_CLOSING));
}
}
}
}
});
dialog3.setLocation(p);
dialog3.pack();
dialog3.setVisible(true);
Quelle méthode utilisez-vous? showConfirmDialog, showInputDialog?
Je suis à l'aide de JDialog de createDialog ou setContentPane, mais je pourrais aller avec n'importe quoi si cela ne fonctionne pas
Je suis à l'aide de JDialog de createDialog ou setContentPane, mais je pourrais aller avec n'importe quoi si cela ne fonctionne pas
OriginalL'auteur bioMind | 2012-10-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer vos propres
JDialog
pour vérifier la saisie de l'utilisateur, etc avant la fermeture ou le déplacement. Voir ce lien:Arrêt Automatique De La Boîte De Dialogue De Fermeture
Voici un exemple que j'ai fait:
Si vous tapez mal/pas de texte et cliquez sur Entrer un message de validation s'affiche:
Si vous cliquez sur X pour fermer la boîte de Dialogue ou cliquez sur Annuler un message de validation s'être montré aussi:
Si le texte correct est entré (dans ce cas, "David") et l'entrée est cliqué sur un message est affiché et
JDialog
est sorti:CustomDialog.java:
Parfait! La seule chose que je recommande en train de changer: l'utilisation
optionPane.addPropertyChangeListener("value", this);
pour améliorer les performances.+1 pour cette raison que j'ai utilisé... merci David. J'ai posté la mienne ci-dessous parce que c'est légèrement différent et peut être utile
heureux d'être de l'aide, et comme je l'ai dit je ne suis pas sûr qu'il fonctionne très bien pour moi avec un simple copier-coller de ce code?
Puis-je utiliser mon propre
JFrame
etJPanel
pour créer unJOptionPane
au lieu d'ajouter des tableaux de chaîne. Par exemple, je peux passer mes propres JFrame et un Composite à JOptionPane.showMessageDialog().OriginalL'auteur David Kroukamp
Une chose à propos de Arrêt Automatique De La Boîte De Dialogue De Fermeture est qu'il n'est utile que si vous souhaitez empêcher de clôture ou de les valider puis fermer... en fondant une solution sur l'exemple de code dans ce tutoriel, je ne pourrais pas obtenir de valider et de rester ouvert si la validation a échoué.
Rétrospectivement, je pense que la raison de ma première tentative n'a pas fonctionné, peut-être parce qu'il a utilisé JOptionPanel.createDialog() (pas ce que l'exemple de code fait). Peut-être laisser le JOptionPanel créer son propre JDialog de mettre en place certains "arrière-plan" dépendances dans la façon dont le traitement des événements travaillé... meh. En tout cas, j'ai obtenu ce que je voulais maintenant: David Kroucamp du code a été très utile pour moi.
Je poste ma solution car il gère PropertyChangeEvents différemment de David, de sorte qu'il pourrait être utile à certaines personnes. Vous verrez qu'une grande partie du code est identique à son (merci David)
Cette classe vérifie fichier existence et permet à l'utilisateur de fournir un nouveau nom ou de l'annuler. Il faut un certain args dans le constructeur qu'il utilise pour valider les utilisateurs d'entrée. La validation est
if(!Files.exists(rootPathArg.resolve(input))) { //close the dialog }
Le code de l'invoquer est:
votre code a bien fonctionné, désolé pour la confusion. Ce que je ne pouvais pas aller au travail, a été mon premier tentative, qui consistait à couper et coller à partir de la partie de l'exemple de code dans le tutoriel Java.
OriginalL'auteur PMorganCA