Jython - Menu

La maggior parte delle applicazioni basate su GUI hanno una barra dei menu nella parte superiore. Si trova appena sotto la barra del titolo della finestra di primo livello. Il pacchetto javax.swing ha funzionalità elaborate per costruire un efficiente sistema di menu. È costruito con l'aiuto diJMenuBar, JMenu e JMenuItem classi.

Nell'esempio seguente, viene fornita una barra dei menu nella finestra di primo livello. Alla barra dei menu viene aggiunto un menu File composto da tre pulsanti di voci di menu. Prepariamo ora un oggetto JFrame con il layout impostato su BorderLayout.

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

Ora, un oggetto JMenuBar viene attivato dal metodo SetJMenuBar ().

bar = JMenuBar()
frame.setJMenuBar(bar)

Successivamente, viene dichiarato un oggetto JMenu con didascalia "File". Tre pulsanti JMenuItem vengono aggiunti al menu File. Quando si fa clic su una delle voci di menu, viene eseguita la funzione OnClick () del gestore ActionEvent. È definito con la proprietà 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)

Il gestore di eventi OnClick () recupera il nome del pulsante JMenuItem dalla funzione gwtActionCommand () e lo visualizza nella casella di testo nella parte inferiore della finestra.

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

L'oggetto menu File viene aggiunto alla barra dei menu. Infine, un controllo JTextField viene aggiunto nella parte inferiore dell'oggetto JFrame.

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

L'intero codice di menu.py è riportato di seguito:

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)

Quando lo script precedente viene eseguito utilizzando l'interprete Jython, viene visualizzata una finestra con il menu File. Fare clic su di esso e le sue tre voci di menu verranno visualizzate. Se si fa clic su un pulsante, il suo nome verrà visualizzato nel controllo della casella di testo.