亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

使用Java編寫圖形化的菜單的教程

2019-11-26 14:56:36
字體:
來源:轉載
供稿:網友

有兩種類型的菜單:下拉式菜單和彈出式菜單。本章只討論下拉式菜單編程方法。菜單與JComboBox和JCheckBox不同,它們在界面中是一直可見的。菜單與JComboBox的相同之處是每次只可選擇一個項目。

在下拉式菜單或彈出式菜單中選擇一個選項就產生一個ActionEvent事件。該事件被發送給那個選項的監視器,事件的意義由監視器解釋。
菜單條、菜單和菜單項

下拉式菜單通過出現在菜單條上的名字可視化表示,菜單條(JMenuBar)通常出現在JFrame的頂部,一個菜單條顯示多個下拉式菜單的名字。可以用兩種方式來激活下拉式菜單。一種是按下鼠標的按鈕,并保持按下狀態,移動鼠標,直至釋放鼠標完成選擇,高亮度顯示的菜單項即為所選擇的。另一種方式是當光標位于菜單條中的菜單名上時,點擊鼠標,在這種情況下,菜單會展開,且高亮度顯示菜單項。

一個菜單條可以放多個菜單(JMenu),每個菜單又可以有許多菜單項(JMenuItem)。例如,Eclipse環境的菜單條有File、Edit、Source、Refactor等菜單,每個菜單又有許多菜單項。例如,File菜單有New、Open File、Close 、Close All等菜單項。

向窗口增設菜單的方法是:先創建一個菜單條對象,然后再創建若干菜單對象,把這些菜單對象放在菜單條里,再按要求為每個菜單對象添加菜單項。
菜單中的菜單項也可以是一個完整的菜單。由于菜單項又可以是另一個完整菜單,因此可以構造一個層次狀菜單結構。

1.菜單條
類JMenuBar的實例就是菜單條。例如,以下代碼創建菜單條對象menubar:

  JMenuBar menubar = new JMenuBar();


在窗口中增設菜單條,必須使用JFrame類中的setJMenuBar()方法。例如,代碼:

  setJMenuBar(menubar);

類JMenuBar的常用方法有:

  • add(JMenu m):將菜單m加入到菜單條中。
  • countJMenus():獲得菜單條中菜單條數。
  • getJMenu(int p):取得菜單條中的菜單。
  • remove(JMenu m):刪除菜單條中的菜單m。

2. 菜單
由類JMenu創建的對象就是菜單。類JMenu的常用方法如下:

  • JMenu():建立一個空標題的菜單。
  • JMenu(String s):建立一個標題為s的菜單。
  • add(JMenuItem item):向菜單增加由參數item指定的菜單選項。
  • add(JMenu menu):向菜單增加由參數menu指定的菜單。實現在菜單嵌入子菜單。
  • addSeparator():在菜單選項之間畫一條分隔線。
  • getItem(int n):得到指定索引處的菜單項。
  • getItemCount():得到菜單項數目。
  • insert(JMenuItem item,int n):在菜單的位置n插入菜單項item.
  • remove(int n):刪除菜單位置n的菜單項
  • removeAll():刪除菜單的所有菜單項。

3.菜單項
類JMenuItem 的實例就是菜單項。類JMenuItem的常用方法如下:

  • JMenuItem():構造無標題的菜單項。
  • JMenuItem(String s):構造有標題的菜單項。
  • setEnabled(boolean b):設置當前單項是否可被選擇。
  • isEnabled():返回當前菜單項是否可被用戶選擇。
  • getLabel():得到菜單項的名稱。
  • setLabel():設置菜單選項的名稱。
  • addActionListener(ActionListener e):為菜單項設置監視器。監視器接受點擊某個菜單的動作事件。

4. 處理菜單事件
菜單的事件源是用鼠標點擊某個菜單項。處理該事件的接口是ActionListener,要實現的接口方法是actionPerformed(ActionEvent e),獲得事件源的方法getSource().

【例】小應用程序示意窗口有菜單條的實現方法。設有一個按鈕,當按鈕處于打開窗口狀態時,單擊按鈕將打開一個窗口,窗口設有一個菜單條,有兩個菜單,每個菜單又各有三個菜單項。當一個菜單項被選中時,菜單項監視方法在文本框中顯示相應菜單項被選中字樣。

import java.applet.*import javax.swing.*;import java.awt.*;import java.awt.event.*;class MenuWindow extends JFrame implements ActionListener{  public static JtextField text;  private void addItem(JMenu Menu,String menuName,ActionListener listener){    JMenuItem anItem = new JMenuItem(menuName);    anItem.setActionCommand(menuName);    anItem.addActionListener(listener);    Menu.add(anItem);  }  public MenuWindow(String s,int w,int h){    setTitle(s);    Container con = this.getContentPane();    con.setLayout(new BorderLayout());    this.setLocation(100,100);    this.setSize(w,h);    JMenu menu1 = new JMenu("體育");    addItem(menu1," 跑步",this);    addItem(menu1," 跳繩",this);    addItem(menu1,"打球",this);    JMenu menu2 = JMenu("娛樂");    addItem(menu2,"唱歌",this);    addItem(menu2,"跳舞",this);    addItem(menu2,"游戲",this);    JMenuBar menubar = new JMenuBar();    text = new JTextField();    menubar.add(menu1);    menubar.add(menu2);    setJMenuBar(MenuBar);    con.add(text,BorderLayout.NORTH);  }  public void actionPerformed(ActionEvent e){    text.setText(e.getActionCommand()+"菜單項被選中!");  }}public class Example6_5 extends Applet implements ActionListener{  MenuWindow window;  JButton button;  boolean bflg;  public void init(){    button = new JButton("打開我的體育娛樂之窗");bflg =true;    window = new MenuWindow("體育娛樂之窗",100,100);    button.addActionListener(this);    add(button);  }  public void actionPerformed(ActionEvent e){    if(e.getSource()==button){      if(bflg){        window.setVisible(true);        bflg = false;        button.setLabel("關閉我的體育娛樂之窗");      }      else{        window.setVisible(false);        bflg = true;        button.setLabel("打開我的體育娛樂之窗");      }    }  }}

5. 嵌入子菜單
創建了一個菜單,并創建多個菜單項,其中某個菜單項又是一個(含其他菜單項的)菜單,這就構成菜單嵌套。例如,將上述程序中的有關代碼改成如下:

  Menu menu1,menu2,item4;  MenuItem item3,item5,item6,item41,item42;


另插入以下代碼創建item41和item42菜單項,并把它們加入到item4菜單中:

  item41= new MenuItem(“東方紅”);  item42 = new MenuItem(“牡丹”);  item4.add(item41);  item4.add(item42);


則點擊item4菜單時,又會打開兩個菜單項供選擇。

6. 向菜單增加退出項
增設一個新的菜單項,對該菜單項加入監視,對應的監視方法中使用System.exit()方法,就能實現單擊該菜單項時退出Java運行環境。例如,以下示意代碼:

…item7 = new MenuItem(“退出”);item7.addActionListener(this);…public void actionPerformed(ActionEvent e){if(e.getSource()==item7){System.exit(0);}}


7.設置菜單項的快捷鍵
用MenuShortcut類為菜單項設置快捷鍵。構造方法是MenuShortcut(int key)。其中key可以取值KeyEvent.VK_A至KenEvent.VK_Z,也可以取 ‘a'到 ‘z'鍵碼值。菜單項使用setShortcut(MenuShortcut k)方法來設置快捷鍵。例如,以下代碼設置字母e為快捷鍵。

class Herwindow extends Frame implements ActionListener{  MenuBar menbar;  Menu menu;  MenuItem item;  MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_E);  …  item.setShortcut(shortcut);  …}

選擇框菜單項

菜單也可以包含具有持久的選擇狀態的選項,這種特殊的菜單可由JCheckBoxMenuItem類來定義。JCheckBoxMenuItem對象像選擇框一樣,能表示一個選項被選中與否,也可以作為一個菜單項加到下拉菜單中。點擊JCheckBoxMenuItem菜單時,就會在它的左邊出現打勾符號或清除打勾符號。例如,在例6.5程序的類MenuWindow中,將代碼

  addItem(menu1,“跑步”,this);addItem(menu1,”跳繩”,this);


改寫成以下代碼,就將兩個普通菜單項“跑步“和“跳繩”改成兩個選擇框菜單項:

  JCheckBoxMenuItem item1 = new JCheckBoxMenuItem(“跑步”);  JCheckBoxMenuItem item2 = new JCheckBoxMenuItem(“跳繩”);  item1.setActionCommand(“跑步”);  item1.addActionListener(this);  menu1.add(item1);  item2.setActionCommand(“跳繩”);  item2.addActionListener(this);  menu1.add(item2);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91沈先生作品| 国产精品福利久久久| 日韩中文字幕国产精品| 国产精品高潮呻吟久久av无限| 亚洲专区国产精品| 中文字幕自拍vr一区二区三区| 久久69精品久久久久久久电影好| 国产成人涩涩涩视频在线观看| 午夜精品久久久久久99热软件| 在线丨暗呦小u女国产精品| 亚洲人成在线观| 国产精品91视频| www.日韩av.com| 久久伊人精品天天| 国产精品久久久久久久久久久不卡| 国产香蕉一区二区三区在线视频| 亚洲欧美一区二区三区四区| 日韩精品亚洲元码| 亚洲欧美日韩国产精品| 日韩中文字幕视频| 日韩在线观看av| 欧美黄网免费在线观看| 亚洲天堂免费视频| 国产精品久久久久久久久借妻| 色诱女教师一区二区三区| 国产精品r级在线| 俺也去精品视频在线观看| 在线视频免费一区二区| 国产精品美女视频网站| 91精品国产九九九久久久亚洲| 成人国产精品日本在线| 国产suv精品一区二区| 国产精品人成电影在线观看| 久久精品免费播放| 亚洲欧美三级在线| 精品动漫一区二区| 国产一区二区精品丝袜| 俺去亚洲欧洲欧美日韩| 久久大大胆人体| 色综合久综合久久综合久鬼88| 91久久精品国产91久久| 国外成人性视频| 亚洲国产精品va在线看黑人| 亚洲欧美另类中文字幕| 久久精品国产久精国产思思| 欧美在线视频观看免费网站| 久久99青青精品免费观看| 中文字幕日韩在线播放| 亚洲精品在线视频| 国产视频亚洲精品| xvideos亚洲人网站| 成人午夜在线视频一区| 美女av一区二区三区| 91成品人片a无限观看| 精品国产一区二区三区久久久| 亚洲国产欧美一区二区三区同亚洲| 美日韩精品视频免费看| 26uuu亚洲国产精品| 国产精品久久久久久久久影视| 欧美精品videossex性护士| 色悠久久久久综合先锋影音下载| 亚洲性生活视频在线观看| 国产精品免费一区二区三区都可以| 亚洲欧美日韩另类| 日本成人精品在线| 精品久久香蕉国产线看观看gif| 国产亚洲精品va在线观看| 中日韩美女免费视频网址在线观看| 日韩欧美国产中文字幕| 亚洲激情视频在线观看| 亚洲一区二区三区sesese| 欧美大全免费观看电视剧大泉洋| 国产欧美在线观看| 国产成人精品a视频一区www| 亚洲精品日韩欧美| 久久精品国产99国产精品澳门| 在线视频欧美性高潮| 成人欧美一区二区三区在线湿哒哒| 2019亚洲男人天堂| 亚洲aⅴ男人的天堂在线观看| 亚洲国产精品人人爽夜夜爽| 中文欧美在线视频| 国产日韩在线亚洲字幕中文| 97视频在线观看免费高清完整版在线观看| 国产精品吊钟奶在线| 欧美视频在线观看免费| 欧美成人免费一级人片100| 亚洲在线观看视频网站| 日韩av一区二区在线| 亚洲图中文字幕| 久久久久九九九九| 国产精品视频最多的网站| 精品久久久久久久久国产字幕| 性欧美视频videos6一9| 在线观看久久久久久| 亚洲第一黄色网| 久久午夜a级毛片| 精品视频中文字幕| 久久久久国产视频| 97在线视频免费播放| 91免费观看网站| 亚洲第一视频网站| 国产精品看片资源| 日韩中文第一页| 91香蕉嫩草影院入口| 久久精品国产视频| 亚洲午夜精品久久久久久久久久久久| 精品久久久久久久久久国产| 欧美日韩国产专区| 欧美一级淫片丝袜脚交| 欧美在线视频一区二区| 亚洲国产精品专区久久| 亚洲精品午夜精品| 尤物99国产成人精品视频| 国产精品尤物福利片在线观看| 国产综合在线观看视频| 久久国产精品视频| 久久久久在线观看| 欧洲亚洲女同hd| 国产一区二区三区在线观看网站| 亚洲欧美日韩成人| 久久视频在线免费观看| 亚洲欧美日韩中文在线制服| 成人av资源在线播放| 国产精品日韩在线| 欧美一乱一性一交一视频| 一本一本久久a久久精品牛牛影视| 国产精品777| 久久免费观看视频| 久久久久久久亚洲精品| 国产成人在线精品| 欧美电影在线观看| 国产91九色视频| 久久天天躁日日躁| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美日韩国产精品| 久久99精品久久久久久青青91| 亚洲韩国日本中文字幕| 欧美日韩一二三四五区| 久久久亚洲精选| 91免费高清视频| 中文字幕在线观看日韩| 日韩免费av一区二区| 成人精品久久一区二区三区| 国产精品xxx视频| 韩国精品久久久999| 51色欧美片视频在线观看| 日韩视频免费大全中文字幕| 国产精品一区二区性色av| 奇米一区二区三区四区久久| 欧美成人中文字幕| 亚洲夜晚福利在线观看| 蜜月aⅴ免费一区二区三区| 亚洲国产天堂久久国产91| 日韩黄色在线免费观看| 亚洲美女av黄| 精品国产区一区二区三区在线观看| 亚洲精品视频中文字幕| 国产精品va在线| 亚洲国产精品专区久久| 欧美激情精品久久久久久| 91精品啪aⅴ在线观看国产| 亚洲成人黄色在线观看| 欧美高清视频在线|