Jython - Меню

Большинство приложений на основе графического интерфейса пользователя имеют панель меню вверху. Он находится чуть ниже строки заголовка окна верхнего уровня. В пакете javax.swing есть продуманные средства для создания эффективной системы меню. Он построен с помощьюJMenuBar, JMenu и JMenuItem классы.

В следующем примере строка меню предоставляется в окне верхнего уровня. К строке меню добавляется меню «Файл», состоящее из трех кнопок пунктов меню. Теперь давайте подготовим объект JFrame с макетом, установленным на BorderLayout.

frame = JFrame("JMenuBar example")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setLocation(100,100)
frame.setSize(400,300)
frame.setLayout(BorderLayout())

Теперь объект JMenuBar активируется методом SetJMenuBar ().

bar = JMenuBar()
frame.setJMenuBar(bar)

Затем объявляется объект JMenu с заголовком «Файл». В меню «Файл» добавлены три кнопки JMenuItem. При нажатии любого из пунктов меню выполняется функция OnClick () обработчика ActionEvent. Он определяется свойством actionPerformed.

file = JMenu("File")
newfile = JMenuItem("New",actionPerformed = OnClick)
openfile = JMenuItem("Open",actionPerformed = OnClick)
savefile = JMenuItem("Save",actionPerformed = OnClick)
file.add(newfile)
file.add(openfile)
file.add(savefile)
bar.add(file)

Обработчик события OnClick () получает имя кнопки JMenuItem с помощью функции gwtActionCommand () и отображает его в текстовом поле в нижней части окна.

def OnClick(event):
   txt.text = event.getActionCommand()

Объект меню Файл добавлен в строку меню. Наконец, в нижней части объекта JFrame добавляется элемент управления JTextField.

txt = JTextField(10)
frame.add(txt, BorderLayout.SOUTH)

Полный код menu.py приведен ниже -

from javax.swing import JFrame, JMenuBar, JMenu, JMenuItem, JTextField
from java.awt import BorderLayout

frame = JFrame("JMenuBar example")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setLocation(100,100)
frame.setSize(400,300)
frame.setLayout(BorderLayout())

def OnClick(event):
   txt.text = event.getActionCommand()

bar = JMenuBar()
frame.setJMenuBar(bar)

file = JMenu("File")
newfile = JMenuItem("New",actionPerformed = OnClick)
openfile = JMenuItem("Open",actionPerformed = OnClick)
savefile = JMenuItem("Save",actionPerformed = OnClick)
file.add(newfile)
file.add(openfile)
file.add(savefile)
bar.add(file)

txt = JTextField(10)
frame.add(txt, BorderLayout.SOUTH)

frame.setVisible(True)

Когда приведенный выше сценарий выполняется с использованием интерпретатора Jython, появляется окно с меню «Файл». Щелкните по нему, и его три пункта меню выпадут. Если нажать любую кнопку, ее имя будет отображаться в текстовом поле.