激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 使用Java編寫圖形化的菜單的教程

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

2020-01-08 14:37goldensun JAVA教程

這篇文章主要介紹了使用Java編寫圖形化的菜單的教程,需要的朋友可以參考下

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

在下拉式菜單或彈出式菜單中選擇一個選項(xiàng)就產(chǎn)生一個ActionEvent事件。該事件被發(fā)送給那個選項(xiàng)的監(jiān)視器,事件的意義由監(jiān)視器解釋。
菜單條、菜單和菜單項(xiàng)

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

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

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

1.菜單條
類JMenuBar的實(shí)例就是菜單條。例如,以下代碼創(chuàng)建菜單條對象menubar:

?
1
JMenuBar menubar = new JMenuBar();


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

?
1
setJMenuBar(menubar);

類JMenuBar的常用方法有:

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

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

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

3.菜單項(xiàng)
類JMenuItem 的實(shí)例就是菜單項(xiàng)。類JMenuItem的常用方法如下:

  • JMenuItem():構(gòu)造無標(biāo)題的菜單項(xiàng)。
  • JMenuItem(String s):構(gòu)造有標(biāo)題的菜單項(xiàng)。
  • setEnabled(boolean b):設(shè)置當(dāng)前單項(xiàng)是否可被選擇。
  • isEnabled():返回當(dāng)前菜單項(xiàng)是否可被用戶選擇。
  • getLabel():得到菜單項(xiàng)的名稱。
  • setLabel():設(shè)置菜單選項(xiàng)的名稱。
  • addActionListener(ActionListener e):為菜單項(xiàng)設(shè)置監(jiān)視器。監(jiān)視器接受點(diǎn)擊某個菜單的動作事件。

4. 處理菜單事件
菜單的事件源是用鼠標(biāo)點(diǎn)擊某個菜單項(xiàng)。處理該事件的接口是ActionListener,要實(shí)現(xiàn)的接口方法是actionPerformed(ActionEvent e),獲得事件源的方法getSource().

【例】小應(yīng)用程序示意窗口有菜單條的實(shí)現(xiàn)方法。設(shè)有一個按鈕,當(dāng)按鈕處于打開窗口狀態(tài)時,單擊按鈕將打開一個窗口,窗口設(shè)有一個菜單條,有兩個菜單,每個菜單又各有三個菜單項(xiàng)。當(dāng)一個菜單項(xiàng)被選中時,菜單項(xiàng)監(jiān)視方法在文本框中顯示相應(yīng)菜單項(xiàng)被選中字樣。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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()+"菜單項(xiàng)被選中!");
  }
}
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("關(guān)閉我的體育娛樂之窗");
      }
      else{
        window.setVisible(false);
        bflg = true;
        button.setLabel("打開我的體育娛樂之窗");
      }
    }
  }
}

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

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


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

?
1
2
3
4
item41= new MenuItem(“東方紅”);
item42 = new MenuItem(“牡丹”);
item4.add(item41);
item4.add(item42);


則點(diǎn)擊item4菜單時,又會打開兩個菜單項(xiàng)供選擇。

6. 向菜單增加退出項(xiàng)
增設(shè)一個新的菜單項(xiàng),對該菜單項(xiàng)加入監(jiān)視,對應(yīng)的監(jiān)視方法中使用System.exit()方法,就能實(shí)現(xiàn)單擊該菜單項(xiàng)時退出Java運(yùn)行環(huán)境。例如,以下示意代碼:

?
1
2
3
4
5
6
7
8
9
10
 
item7 = new MenuItem(“退出”);
item7.addActionListener(this);
public void actionPerformed(ActionEvent e){
if(e.getSource()==item7){
System.exit(0);
}
}

 

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

?
1
2
3
4
5
6
7
8
9
class Herwindow extends Frame implements ActionListener{
  MenuBar menbar;
  Menu menu;
  MenuItem item;
  MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_E);
  
  item.setShortcut(shortcut);
  
}

選擇框菜單項(xiàng)

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

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


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

?
1
2
3
4
5
6
7
8
JCheckBoxMenuItem item1 = new JCheckBoxMenuItem(“跑步”);
JCheckBoxMenuItem item2 = new JCheckBoxMenuItem(“跳繩”);
item1.setActionCommand(“跑步”);
item1.addActionListener(this);
menu1.add(item1);
item2.setActionCommand(“跳繩”);
item2.addActionListener(this);
menu1.add(item2);

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费亚洲视频在线观看 | 广西一级毛片 | 成年人在线视频免费 | 爱福利视频网 | 撅高 自己扒开 调教 | 精品中文字幕在线观看 | 色女人在线 | 羞羞羞羞视频 | 久久艹一区 | 视频一区 中文字幕 | 91精品国产福利尤物免费 | 久久久久久久久久久影视 | 久久精品一区二区三区四区五区 | a在线视频| 欧美亚洲免费 | 久久久久久久一区二区三区 | 免费亚洲视频在线观看 | 免费观看一级黄色片 | 91中文在线| 日本精品视频一区二区三区四区 | 91精品国产91久久久久久丝袜 | 欧美一级毛片欧美一级成人毛片 | 久草在线免费看 | 欧美 日韩 国产 在线 | 欧美性色生活片免费播放 | 美女网站黄在线观看 | 国产精品一区二区三区在线播放 | 久草在线公开视频 | 欧美亚洲一级 | 国产一区精品在线观看 | 毛片大全免费 | 天天草天天干天天 | 午夜热门福利 | 久草热久 | 久久久久久久免费视频 | 欧美三级短视频 | 特黄一级小说 | 免费国产自久久久久三四区久久 | 看av网址| 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 精品久久久久久久 |