Jython - Diálogos

Un objeto de diálogo es una ventana que aparece en la parte superior de la ventana base con la que interactúa el usuario. En este capítulo, veremos los diálogos preconfigurados definidos en la biblioteca swing. SonMessageDialog, ConfirmDialog y InputDialog. Están disponibles debido al método estático de la clase JOptionPane.

En el siguiente ejemplo, el menú Archivo tiene tres elementos de JMenu correspondientes a los tres diálogos anteriores; cada uno ejecuta elOnClick controlador de eventos.

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 función del controlador OnClick () recupera el título del botón de elemento de menú e invoca el método showXXXDialog () respectivo.

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 se elige la opción de mensaje del menú, aparece un mensaje. Si se hace clic en la opción Entrada, aparece un cuadro de diálogo que solicita la entrada. El texto de entrada se muestra en el cuadro de texto de la ventana JFrame. Si se selecciona la opción Confirmar, aparece un diálogo con tres botones, SÍ, NO y CANCELAR. La elección del usuario se registra en el cuadro de texto.

El código completo se da a continuación:

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)

Cuando se ejecuta el script anterior, se muestra la siguiente ventana con tres opciones en el menú:

Caja de mensaje

Caja de entrada

Confirmar diálogo