Java中的JMenuBar

	JMenuBar是用於製作菜單欄時用到的一個組件。將 JMenu 對象添加到菜單欄以構造菜單。當用戶選擇 JMenu 對象時,就會顯示其關聯的 JPopupMenu,允許用戶選擇其上的某一個 JMenuItem。
	菜單是非常重要的GUI組件,其界面提供的信息簡明清晰,在用戶界面中經常使用。Java的菜單組件是由多個類組成的,主要有:JMenuBar(菜單欄)、JMenu(菜單)、JMenuItem(菜單項)和JPopupMenu(彈出菜單)。

每個菜單組件都包含一個菜單欄,每個菜單欄又包含若干個菜單,每個菜單包含若干個
菜單項。菜單項的作用與按鈕類似,當用戶單擊時產生一個命令動作。
Java 中的菜單分爲兩類:一類是下拉式菜單,通常所說的菜單就是這一類;另一類就是
彈出式菜單。
1.創建下拉式菜單
(1)創建菜單欄JMenuBar
菜單欄組件是一個水平菜單。它只能加入到一個框架中,併成爲所有菜單樹的根。在一
個時刻,一個框架可以顯示一個菜單欄。然而,也可以根據程序的狀態修改菜單欄,這樣,
在不同的時刻就可以顯示不同的菜單。例如:
JFrame f=new JFrame("菜單實例"); //創建框架
JMenuBar JMB=new JMenuBar(); //創建菜單欄JMB
f.setJMenuBar(JMB); //設置JMB 爲框架f的菜單欄
菜單欄不支持監聽者。作爲普通菜單行爲的一部分,在菜單欄的區域中發生的事件和普
通組件一樣會被自動處理。
(2)創建菜單,添加到菜單欄中
菜單提供了一個基本的下拉式菜單。
(接上例):
JMenu m1=new JMenu("File"); //創建File 菜單m1
JMenu m2=new JMenu("Edit");
JMenu m3=new JMenu("Tool");
JMenu m4=new JMenu("Help");
JMB.add(m1);//將m1添加到JMB菜單欄上


JMB.add(m2);
JMB.add(m3);
JMB.add(m4);
(3)創建菜單項,加入到菜單中
菜單項是菜單樹的“葉”節點。它們通常被加入到菜單中,以構成一個完整的菜單,例
如(接上例):
JMenuItem mi1=new JMenuItem("New"); //創建new菜單項目
mi1.setActionCommand("New"); //設置菜單項mil 的命令字符串爲New
JMenuItem mi2=new JMenuItem("Load");
JMenuItem mi3=new JMenuItem("Save");
JMenuItem mi4=new JMenuItem("Quit");
m1.add(mi1); //把菜單項mi1 加入到菜單m1 中
m1.add(mi2);
m1.add(mi3);
m1.add(mi4);
(4)將建成的菜單欄添加到框架等容器中
例如,前面的例子中的f.setJMenuBar(JMB);,即設置JFrame 對象f的菜單欄爲JMB。
(5)將菜單項註冊給動作事件的監聽者ActionListener
例如:MenuListener myListener=new MenuListener( ); //創建監聽對象
mi1.addActionListener(myListener); //爲菜單項添加監聽對象
其中MenuListener 爲實現ActionListener 接口的類,在該類中重載actionPerformed 方法,
例如:
class MenuListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("Quit"))
System.exit(0); //如果選擇了Quit 菜單項,退出程序
}
}
(6)使用分隔線
如果希望在菜單項之間添加一條橫向分隔線,以便將菜單項分成幾組,則需要調用菜單
的方法addSeparator( )。例如:m1.addSeparator();。
(7)爲菜單項定義訪問鍵
除了可以單擊鼠標選擇菜單項外,還可以爲每個菜單項定義一個鍵盤訪問鍵,這樣就可
以用鍵盤來選擇菜單項了。訪問鍵是一個字母,定義好了之後,按住Alt 鍵和該字母就可以
選擇菜單中對應的菜單項。例如,mi1.setMnemonic(’F’);給mi1 菜單項設置了訪問鍵F,當菜
單項在界面上可見時,可以在鍵盤上按下Alt 鍵不放,同時按F鍵運行對應的命令。
如果希望菜單還有子菜單,只需先建立帶菜單項的菜單,再把該菜單像菜單項一樣加入到另一個菜單即可。

在Java 菜單中定義了方鈕確認框選項JcheckBoxMenuItem能夠選中和不選中,圓形確認
框選項JradioButtonMenuItem能選中和不選中(一個選中,其他變爲不選中,具有排他性),
它們的構造方法和JMenuItem類似,只是多了一個是否選中的參數。對應地,菜單項引發的
事件是ItemEvent,這樣需要利用addItemListener方法把菜單項註冊給ItemListener類的對象,
並實現ItemListener 的itemStateChanged(ItemEvent e)方法。我們可以通過ItemEvent 對象的
getStateChange( )方法獲取菜單項的狀態(2 表示從選中到未選中,1 表示從未選中到選中)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章