JOptionPane.showMessageDialog attendre jusqu'à ce que vous cliquez sur OK?
Cela peut être une chose très simple que je suis dominant, mais je n'arrive pas à le comprendre.
J'ai la méthode suivante qui met à jour une JTable:
class TableModel extends AbstractTableModel {
public void updateTable() {
try {
//update table here
...
} catch (NullPointerException npe) {
isOpenDialog = true;
JOptionPane.showMessageDialog(null, "No active shares found on this IP!");
isOpenDialog = false;
}
}
}
Cependant, je ne veux pas isOpenDialog
booléen à false jusqu'à ce que le bouton OK dans la boîte de dialogue de message est pressé, parce que si un utilisateur appuie sur entrée, il activera un KeyListener
événement sur un textfield et il déclenche l'ensemble de ce bloc de code nouveau, si elle est définie à false
.
Partie de la KeyListener code est indiqué ci-dessous:
public class KeyReleased implements KeyListener {
...
@Override
public void keyReleased(KeyEvent ke) {
if(txtIPField.getText().matches(IPADDRESS_PATTERN)) {
validIP = true;
} else {
validIP = false;
}
if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
if (validIP && !isOpenDialog) {
updateTable();
}
}
}
}
Ne JOptionPane.showMessageDialog()
avoir une sorte de mécanisme qui empêche l'exécution de la ligne suivante jusqu'à ce que le bouton OK est pressée? Merci.
Vous devez vous connecter pour publier un commentaire.
La JOptionPane crée une boîte de dialogue modale et donc la ligne au-delà il sera par la conception ne pas être appelé jusqu'à ce que le dialogue a été traité (soit l'un des boutons ont été poussés ou de fermer le menu touche a été enfoncée).
Plus important, vous ne devriez pas être à l'aide d'un KeyListener pour ce genre de chose. Si vous voulez avoir un component swing jtextfield écouter appuyez sur la touche enter pour ajouter un ActionListener à elle.
Un travail facile, autour de la suite de vos besoins est l'utilisation de showConfirmDialog(...), plus de
showMessageDialog()
, cela vous permet de profiter de l'entrée de l'utilisateur et de procéder ensuite de la même manière. Ne jetez un oeil à ce programme d'exemple, pour la clarification 🙂Essayer cela,