Jython - Диалоги
Объект Dialog - это окно, которое появляется поверх основного окна, с которым взаимодействует пользователь. В этой главе мы увидим предварительно сконфигурированные диалоги, определенные в библиотеке Swing. Они естьMessageDialog, ConfirmDialog и InputDialog. Они доступны благодаря статическому методу класса JOptionPane.
В следующем примере в меню File есть три элемента JMenu, соответствующих трем вышеупомянутым диалоговым окнам; каждый выполняетOnClick обработчик события.
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)
Функция обработчика OnClick () извлекает заголовок кнопки пункта меню и вызывает соответствующий метод 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")
Если в меню выбран вариант сообщения, появится сообщение. Если щелкнуть параметр ввода, появится диалоговое окно с запросом ввода. Затем введенный текст отображается в текстовом поле в окне JFrame. Если выбрана опция «Подтвердить», появится диалоговое окно с тремя кнопками: ДА, НЕТ и ОТМЕНА. Выбор пользователя записывается в текстовом поле.
Полный код приведен ниже -
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)
Когда приведенный выше скрипт выполняется, отображается следующее окно с тремя опциями в меню: