Jython - Dialoghi
Un oggetto Dialog è una finestra che appare in cima alla finestra di base con cui interagisce l'utente. In questo capitolo vedremo le finestre di dialogo preconfigurate definite nella libreria swing. Loro sonoMessageDialog, ConfirmDialog e InputDialog. Sono disponibili grazie al metodo statico della classe JOptionPane.
Nell'esempio seguente, il menu File ha tre voci JMenu corrispondenti alle tre finestre di dialogo precedenti; ognuno esegue ilOnClick gestore di eventi.
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 funzione del gestore OnClick () recupera la didascalia del pulsante della voce di menu e richiama il rispettivo metodo 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 viene scelta l'opzione messaggio dal menu, viene visualizzato un messaggio. Se si fa clic sull'opzione di input, viene visualizzata una finestra di dialogo che richiede l'input. Il testo di input viene quindi visualizzato nella casella di testo nella finestra JFrame. Se è selezionata l'opzione Conferma, viene visualizzata una finestra di dialogo con tre pulsanti, SI, NO e ANNULLA. La scelta dell'utente viene registrata nella casella di testo.
L'intero codice è dato di seguito -
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 viene eseguito lo script precedente, viene visualizzata la seguente finestra con tre opzioni nel menu: