Jython - Dialogues

Un objet Dialog est une fenêtre qui apparaît au-dessus de la fenêtre de base avec laquelle l'utilisateur interagit. Dans ce chapitre, nous verrons les dialogues préconfigurés définis dans la bibliothèque swing. Elles sontMessageDialog, ConfirmDialog et InputDialog. Ils sont disponibles en raison de la méthode statique de la classe JOptionPane.

Dans l'exemple suivant, le menu Fichier comporte trois éléments JMenu correspondant aux trois boîtes de dialogue ci-dessus; chacun exécute leOnClick gestionnaire d'événements.

file = JMenu("File")
msgbtn = JMenuItem("Message",actionPerformed = OnClick)
conbtn = JMenuItem("Confirm",actionPerformed = OnClick)
inputbtn = JMenuItem("Input",actionPerformed = OnClick)
file.add(msgbtn)
file.add(conbtn)
file.add(inputbtn)

La fonction de gestionnaire OnClick () récupère la légende du bouton Élément de menu et appelle la méthode showXXXDialog () respective.

def OnClick(event):
   str = event.getActionCommand()
   if str == 'Message':
      JOptionPane.showMessageDialog(frame,"this is a sample message dialog")
   if str == "Input":
      x = JOptionPane.showInputDialog(frame,"Enter your name")
      txt.setText(x)
   if str == "Confirm":
      s = JOptionPane.showConfirmDialog (frame, "Do you want to continue?")
      if s == JOptionPane.YES_OPTION:
         txt.setText("YES")
      if s == JOptionPane.NO_OPTION:
         txt.setText("NO")
      if s == JOptionPane.CANCEL_OPTION:
         txt.setText("CANCEL")

Si l'option de message du menu est choisie, un message apparaît. Si l'option Entrée est cliquée, une boîte de dialogue demandant l'entrée apparaît. Le texte d'entrée est ensuite affiché dans la zone de texte de la fenêtre JFrame. Si l'option Confirmer est sélectionnée, une boîte de dialogue avec trois boutons, OUI, NON et ANNULER apparaît. Le choix de l'utilisateur est enregistré dans la zone de texte.

Le code complet est donné ci-dessous -

from javax.swing import JFrame, JMenuBar, JMenu, JMenuItem, JTextField
from java.awt import BorderLayout
from javax.swing import JOptionPane
frame = JFrame("Dialog example")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setLocation(100,100)
frame.setSize(400,300)
frame.setLayout(BorderLayout())

def OnClick(event):
   str = event.getActionCommand()
   if str == 'Message':
      JOptionPane.showMessageDialog(frame,"this is a sample message dialog")
   if str == "Input":
      x = JOptionPane.showInputDialog(frame,"Enter your name")
      txt.setText(x)
   if str == "Confirm":
      s = JOptionPane.showConfirmDialog (frame, "Do you want to continue?")
      if s == JOptionPane.YES_OPTION:
         txt.setText("YES")
      if s == JOptionPane.NO_OPTION:
         txt.setText("NO")
      if s == JOptionPane.CANCEL_OPTION:
         txt.setText("CANCEL")

bar = JMenuBar()
frame.setJMenuBar(bar)

file = JMenu("File")
msgbtn = JMenuItem("Message",actionPerformed = OnClick)
conbtn = JMenuItem("Confirm",actionPerformed = OnClick)
inputbtn = JMenuItem("Input",actionPerformed = OnClick)
file.add(msgbtn)
file.add(conbtn)
file.add(inputbtn)
bar.add(file)
txt = JTextField(10)
frame.add(txt, BorderLayout.SOUTH)
frame.setVisible(True)

Lorsque le script ci-dessus est exécuté, la fenêtre suivante s'affiche avec trois options dans le menu -

Messagerie

Zone de saisie

Confirmer la boîte de dialogue