action de l'auditeur à JDialog pour cliqué bouton
J'ai de l'application principale où est le tableau avec des valeurs. Ensuite, je clique sur le bouton "Ajouter", une nouvelle COUTUME (je l'ai fait moi-même) JDialog de type popup. Là, je peux la valeur d'entrée, de faire quelques tiques et cliquez sur "Confirmer". J'ai donc besoin de lire que d'entrée de la boîte de dialogue, afin que je puisse ajouter cette valeur à la table dans l'application principale.
Comment puis-je écouter lors de "confirmer" bouton est pressé, donc je ne peux lire que la valeur après?
addISDialog = new AddISDialog();
addISDialog.setVisible(true);
addISDialog.setLocationRelativeTo(null);
//somekind of listener...
//after "Confirm" button in dialog was pressed, get value
value = addISDialog.ISName;
J'ai mis en place l'auditeur à l'intérieur de JDialog et je peux écouter de bouton à l'intérieur de cette boîte de dialogue, mais j'ai besoin d'écouter ce qui touche à l'extérieur de la boîte de dialogue principale de l'application, où j'ai appelé cette boîte de dialogue
Pouvez-vous modifier le
J'ai fait AddISDialog moi-même (public class AddISDialog extends JDialog implémente ActionListener) donc oui, je peux le modifier. Que pensez-vous de débardage ActionEvent à une autre classe? Comment je puis-je le faire?
Une façon de le faire est d'enregistrer un
Pouvez-vous modifier le
JDialog
classe? Si oui, vous pouvez transférer le ActionEvent
à une autre classe qui implémente l' ActionListener
interface et que la classe peut faire ce que vous voulez.J'ai fait AddISDialog moi-même (public class AddISDialog extends JDialog implémente ActionListener) donc oui, je peux le modifier. Que pensez-vous de débardage ActionEvent à une autre classe? Comment je puis-je le faire?
Une façon de le faire est d'enregistrer un
PropertyChangeListener
à la JDialog
instance et qui ont le JDialog
exemple utiliser un PropertyChangeSupport
instance qui va déclencher un changement de propriété d'événement indiquant que le bouton de confirmation a été poussé.addISDialog.setLocationRelativeTo(null);
devrait probablement être quelque chose comme addISDialog.setLocationRelativeTo(mainApplication);
OriginalL'auteur Paulius Vindzigelskis | 2011-12-15
Vous devez vous connecter pour publier un commentaire.
Si la boîte de dialogue disparaîtra après que l'utilisateur appuie sur confirmer:
setVisible(true)
dans la boîte de dialogue. Donc, il vous suffit de requête de la boîte de dialogue objet de son état dans les lignes de code immédiatement après l'appel desetVisible(true)
dans la boîte de dialogue.Si la boîte de dialogue est de rester ouvert après que l'utilisateur appuie sur confirmer:
Pour plus de détails, veuillez nous montrer pertinente des éléments de votre code, ou encore mieux, un sscce.
Par exemple pour permettre à la classe JDialog à accepter l'extérieur auditeurs, vous pourriez lui donner un component swing jtextfield et un JButton:
et une méthode qui permet à l'extérieur de classes à ajouter un ActionListener le bouton:
Puis un en dehors de la classe suffit d'appeler le `addConfirmListener(...) la méthode pour ajouter ses ActionListener à la confirmBtn.
Par exemple:
Mises en garde cependant: je ne recommande pas de sous-classement JFrame ou JDialog, sauf si absolument nécessaire. Il a été fait ici simplement pour des raisons de concision. J'ai aussi moi-même préférez utiliser une boîte de dialogue modale pour la résolution de ce problème et de le ré-ouvrir la boîte de dialogue en cas de besoin.
Edit 2
Un exemple d'utilisation d'un Modal dialogue:
Alors ne passez pas par le code ci-dessus. Ce que vous devez faire est de faire de la boîte de dialogue modale, et de confirmer l'action du bouton valider les données et seulement fermer la boîte de dialogue si les données sont OK. Ensuite, demandez à votre programme principal requête de la classe de boîte de dialogue pour les données dans le code immédiatement après l'appel de
setVisible(true)
dans la boîte de dialogue.voir modifier pour un exemple d'une boîte de dialogue modale de la solution ci-dessus.
J'ai fait quelques méthodes publiques de la classe de dialogue, j'ai donc vérifier les données deux fois dans la boite de dialogue pour la fermeture et dans le main pour entrer de nouvelles données. Merci les gars
OriginalL'auteur Hovercraft Full Of Eels
OriginalL'auteur
Pourquoi ne pas vérifier si votre jDialog est-elle visible?
cela fonctionne, aussi.
OriginalL'auteur AndreaTaroni86
ou si vous êtes déjà balancer
auront de vous.
Après conditionnelle déclencher JOptionPane pour envoyer votre avertissement ou que ce soit modale message:
vérifier vos options pour JOptionPane.* pour déterminer le type de message.
OriginalL'auteur user2788049