Jython - Diálogos

Um objeto de diálogo é uma janela que aparece no topo da janela base com a qual o usuário interage. Neste capítulo, veremos os diálogos pré-configurados definidos na biblioteca swing. Eles sãoMessageDialog, ConfirmDialog e InputDialog. Eles estão disponíveis devido ao método estático da classe JOptionPane.

No exemplo a seguir, o menu Arquivo possui três itens JMenu correspondentes aos três diálogos acima; cada um executa oOnClick manipulador 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)

A função de manipulador OnClick () recupera a legenda do botão Menu Item e invoca o respectivo método showXXXDialog ().

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")

Se a opção de mensagem do menu for escolhida, uma mensagem aparecerá. Se a opção de entrada for clicada, uma caixa de diálogo solicitando a entrada aparecerá. O texto de entrada é então exibido na caixa de texto na janela JFrame. Se a opção Confirmar for selecionada, uma caixa de diálogo com três botões, SIM, NÃO e CANCELAR será exibida. A escolha do usuário é registrada na caixa de texto.

Todo o código é fornecido abaixo -

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)

Quando o script acima é executado, a seguinte janela é exibida com três opções no menu -

Caixa de mensagem

Caixa de entrada

Confirmar diálogo