Объект Dialog — это окно, которое появляется поверх базового окна, с которым взаимодействует пользователь. В этой главе мы увидим предварительно сконфигурированные диалоги, определенные в библиотеке свинга. Это MessageDialog, ConfirmDialog и InputDialog . Они доступны из-за статического метода класса JOptionPane.
В следующем примере меню «Файл» содержит три элемента 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")
Если выбрана опция сообщения из меню, появится сообщение. Если выбрана опция Input, появится диалоговое окно с запросом ввода. Введенный текст затем отображается в текстовом поле в окне 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)
Когда приведенный выше скрипт выполняется, в меню отображается следующее окно с тремя параметрами: