JOptionPane Passant Boutons Personnalisés
Je vais essayer d'obtenir la valeur retournée par boutons personnalisés passé à JOptionPane. Cependant les boutons j'en passe ne retourne pas une valeur à tous. Seulement lors de la sortie bouton est pressé est une valeur de -1 est retourné. J'ai besoin de cela parce que je suis l'évolution des propriétés des boutons activé ou désactivé. Je suppose que j'ai besoin de l'boutons pour retourner des informations à l'JOptionPane d'une certaine façon. Une idée?
JButton button1= new JButton("Button 1");
JButton button2= new JButton("Button 2");
button1.setEnabled(false);
int value = JOptionPane.showOptionDialog(null, "Heres a test message", "Test", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{button1, button2}, button1);
JOptionPane.showMessageDialog(null, "You entered " + value);
Nb Ceci est lié à ma question précédente - JOptionPane Gris Un Bouton
J'ai essayé de définir la valeur de l'boutons comme vous l'avez dit, mais ils n'ont jamais de retour sur OK ou sur ANNULER.
Chaque fois que la vérification de la valeur des boutons, ils n'ont jamais retourner la valeur que j'ai mis trop.
JButton button1= new JButton("Button1");
JButton button2= new JButton("Button2");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
//set the value of the option pane
pane.setValue(JOptionPane.OK_OPTION);
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
//set the value of the option pane
pane.setValue(JOptionPane.CANCEL_OPTION);
}
});
if (JOptionPane.showOptionDialog(null, "Pick a button", "Pick", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{button1, button2}, button1) == JOptionPane.OK_OPTION) {
JOptionPane.showMessageDialog(null, "Button1");
}
else{
JOptionPane.showMessageDialog(null, "Button2");
}
Voir ci-dessus, j'ai toujours obtenir le bouton2 popup n'importe quoi.
OriginalL'auteur user2020457 | 2013-01-29
Vous devez vous connecter pour publier un commentaire.
Dans l'exemple que j'ai lié à votre question précédente, utilisez les boutons de la
JOptionPane#setValue
méthode pour définir la valeur de retour. Cela vous permet de continuer à utiliser l'API de la normale, tout en vous offrant la personnalisation de votre après.Regarder de plus près Désactiver le bouton ok sur JOptionPane.boîte de dialogue jusqu'à ce que l'utilisateur donne une entrée
Mis à jour
J'ai repris le code et corriger les
actionPerformed
méthodes pour lui permettre de retourner une valeur valide...La valeur retournée par l'indice de la valeur dans le
options
array (dernier paramètre)Ainsi, par exemple...
Si l'utilisateur clique sur le bouton ok, la valeur de retour sera
0
, ou si elles sélectionnez le bouton annuler, il sera1
Publié dans la question d'origine maintenant.
Je ne suis pas à mon PC pour le moment, je vais jeter un oeil quand j'ai une chance
J'ai mis à jour l'exemple de revenir les valeurs correctes
OriginalL'auteur MadProgrammer
Si vous avez besoin d'un comportement complexe, envisagez de créer votre propre JDialog et puis les afficher dans une modal de la mode.
Si vous devez utiliser un JOptionPane, vous pouvez le faire par l'extraction de ses JDialog et de façon récursive de l'itération à travers ses composants jusqu'à trouver celle que vous souhaitez désactiver et désactiver:
Cependant pour moi, je venais de créer un JDialog.
OriginalL'auteur Hovercraft Full Of Eels
Vous n'avez pas à définir vos boutons explicitement.
Vous avez probablement raison, mais il ne mentionne pas que n'importe où.
Ouais, j'ai juste reconnu le style de question 😉
OriginalL'auteur Dan D.