多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > AWT菜單:

AWT菜單:

來源:程序員人生   發(fā)布時間:2016-11-14 10:07:32 閱讀次數(shù):2856次

AWT菜單:
與創(chuàng)建GUI界面的方式類似,創(chuàng)建AWT菜單就是將菜單條、菜單項和菜單組合在1起。
(1)AWT中的菜單由以下幾個類組合而成:
MenuBar 菜單條,菜單的容器
Menu 菜單組件,菜單項的容器
PopupMenu 上下文菜單組件(右鍵菜單組件)
MenuItem 菜單項組件
CheckboxMenuItem 復(fù)選框菜單組件
MenuShortcut 菜單快捷鍵組件

(2)MenuBar和Menu都實現(xiàn)了菜單容器接口,所以MenuBar可用于艷服Menu,而Menu可用于艷服MenuItem(包括Menu和CheckboxMenuItem兩個子類對象),Meun還有1個子類:PopupMenu,代表上下文菜單,上下文菜單無需使用MenuBar艷服。
(3)Menu/MenuItem的構(gòu)造器都可以接受1個字符串參數(shù),該字符串作為其對應(yīng)菜單、菜單項上的標(biāo)簽文本。除此以外,MenuItem還可以接受1個MenuShortcut對象,該對象用于指定該菜單的快捷鍵。MenuShortcut類使用虛擬鍵代碼(而不是字符)來創(chuàng)建快捷鍵。
例如:Ctrl+A(通常都使用Ctrl鍵作為快捷鍵的輔助鍵)

快捷方式通過以下代碼創(chuàng)建
MenuShortcut ms=new MenuShortcut(KeyEvent.VK_A)
如果還需要Shift鍵的輔助,則可使用以下代碼:
MenuShortcut ms=new MenuShortcut(KeyEvent.VK_A,true)
(3)有時候程序還希望對菜單進行分組,將功能類似的菜單分成1組,此時需要使用菜單分隔符。AWT中添加菜單分隔符有以下兩種方法
a.調(diào)用Menu對象的addSeparator()方法來添加菜單分隔線。
b.使用添加new MenuItem(“-“)的方式添加菜單分隔線。

(4)創(chuàng)建了MenuItem Menu MenuBar 對象以后,調(diào)用Menu的add()方法將多個MenuItem組合成菜單(也能夠?qū)⒘硗庖粋€Menu菜單組合進來,從而構(gòu)成2級菜單),在調(diào)用MenuBar的add()方法,將多個Menu組合成菜單條,最后調(diào)用Frame對象的setMenuBar()方法為該窗口添加菜單條。

實例程序:

package com.zou; import java.awt.CheckboxMenuItem; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.MenuShortcut; import java.awt.TextArea; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class SimpleMenu{ Frame f=new Frame("菜單測試"); MenuBar mb=new MenuBar(); Menu file =new Menu("文件"); Menu edit =new Menu("編輯"); MenuItem newItem =new MenuItem("新建"); MenuItem saveItem=new MenuItem("保存"); //創(chuàng)建exitItem菜單項,指定使用Ctrl+x 快捷鍵 MenuItem exitItem=new MenuItem("退出", new MenuShortcut(KeyEvent.VK_X)); CheckboxMenuItem autoWrap=new CheckboxMenuItem("自動換行"); MenuItem copyItem=new MenuItem("復(fù)制"); MenuItem pasteItem=new MenuItem("粘貼"); Menu format=new Menu("格式"); //創(chuàng)建commonItem菜單項,指定使用CtrShift+/ 快捷鍵 MenuItem commonItem=new MenuItem("注釋", new MenuShortcut(KeyEvent.VK_SLASH,true)); MenuItem cancelItem=new MenuItem("取消注釋"); TextArea ta=new TextArea(8, 60); public void init(){ //以lambda表達式創(chuàng)建菜單事項監(jiān)聽器 ActionListener menuListener=e -> { String cmd =e.getActionCommand(); ta.append("單擊"+cmd+"菜單"+"\n"); if(cmd.equals("退出")){ System.exit(0); } }; //為commonItem菜單項添加事件監(jiān)聽器 commonItem.addActionListener(menuListener); exitItem.addActionListener(menuListener); //為file菜單添加菜單項 file.add(newItem); file.add(saveItem); file.add(exitItem); //為eidt菜單添加菜單項 edit.add(autoWrap); //使用addSeparator方法添加菜單分割線 edit.addSeparator(); edit.add(copyItem); edit.add(pasteItem); //為format菜單添加菜單項 format.add(commonItem); format.add(cancelItem); //使用new MenuItem("-")添加菜單分割線 edit.add(new MenuItem("-")); //將format菜單組合到edit菜單中,從而構(gòu)成2級菜單 edit.add(format); //將file edit 菜單加到mb菜單條中 mb.add(edit); mb.add(file); //為f窗口設(shè)置菜單條 f.setMenuBar(mb); //以匿名內(nèi)部類的情勢創(chuàng)建監(jiān)聽器對象 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.add(ta); f.pack(); f.setVisible(true); } public static void main(String[] args){ new SimpleMenu().init(); } }

AWT菜單組件不能創(chuàng)建圖標(biāo)菜單,如果希望創(chuàng)建帶圖標(biāo)的菜單,則應(yīng)當(dāng)使用Swing的菜單組件:JMenuBar,JMenu JMenuItem JpopupMenu Swing的菜單組件和AWT菜單組件基本類似。

——————————————————————————————————————————————————————————————————————–
右鍵菜單:
(1)右鍵菜單使用PopupMenu對象表示,創(chuàng)建右鍵菜單步驟以下:
創(chuàng)建PopupMenu的實例
創(chuàng)建多個menuItem實例,順次將這些實例加入PopupMenu中
將PopupMenu加入到目標(biāo)組件中
為需要出現(xiàn)上下文菜單的組件編寫鼠標(biāo)監(jiān)聽器,當(dāng)用戶釋放鼠標(biāo)右鍵時彈出右鍵菜單。

示例程序:

————————————————————————————————————————————————————————
在AWT中繪圖:
畫圖的實現(xiàn)原理:
(1)在Component類里提供了以下和繪圖有關(guān)的方法:
paint(Graphics g)繪制組件的外觀
update(Graphics g) 調(diào)用paint()方法,刷新組件外觀
repaint();調(diào)用update()方法,刷新組件外觀。
上面3個方法的調(diào)用關(guān)系為:repaint()調(diào)用update()方法,update()方法調(diào)用paint()方法。

(2)Container類里的update()方法先以組件的背風(fēng)景填充全部組件區(qū)域,然后調(diào)用paint()方法重畫組件。
——————————————————————————————————————————————————————
使用Graphics類
(1)Graphics是1個抽象的畫筆對象,Graphics可以在組件上繪制豐富多彩的幾何圖形和位圖,其提供的方法以下
drawLine() 繪制直線
drawString()繪制字符串
drawRect()繪制矩形
drawRoundRect()繪制圓角矩形
drawOval()繪制橢圓形狀
drawPolygon()繪制多邊形邊框
drawArc()繪制1段圓弧
drawPolyline()繪制折線

fillRect()填充矩形
fillRoundRect()填充圓角矩形
fillOval()填充橢圓形狀
fillPolygon()填充多邊形
fillArc()填充圓弧兩個端點到中心連線所包圍的區(qū)域

drawImage()繪制位圖

除此以外,Graphics還提供了setColor()和setFont()兩個方法來設(shè)置畫筆的色彩和字體。

(2)AWT專門提供了1個Canvas類作為繪圖的畫布,程序可以通過創(chuàng)建Canvas的子類,并重寫它的paint()方法來實現(xiàn)繪圖。
示例:簡單的繪圖程序

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.Panel; import java.util.Random; public class SimpleDraw{ private final String RECT_SHAPE="rect"; private final String OVAL_SHAPE="oval"; private Frame f=new Frame("簡單繪圖"); private Button rect=new Button("繪制矩形"); private Button oval=new Button("繪制圓形"); private MyCanvas drawArea =new MyCanvas(); //用來保存需要繪制甚么圖形的變量 private String shape=""; public void init() { Panel p=new Panel(); rect.addActionListener(e -> { //設(shè)置shape變量為RECT_SHAPE shape=RECT_SHAPE; //重畫MyCanvas對象,即調(diào)用它的repait()方法 drawArea.repaint(); } ); oval.addActionListener(e -> { //設(shè)置shape變量為OVAL_SHAPE shape=OVAL_SHAPE; //重畫MyCanvas對象,即調(diào)用它的repait()方法 drawArea.repaint(); } ); p.add(rect); p.add(oval); drawArea.setPreferredSize(new Dimension(250,180)); f.add(drawArea); f.add(p, BorderLayout.SOUTH); f.pack(); f.setVisible(true); } public static void main(String[] args){ new SimpleDraw().init(); } class MyCanvas extends Canvas{ //重寫Canvas的paint()方法,實現(xiàn)繪畫 public void paint(Graphics g){ Random rand=new Random(); if(shape.equals(RECT_SHAPE)){ //設(shè)置畫筆色彩 g.setColor(new Color(220, 100, 80)); //隨機畫1個矩形塊 g.drawRect(rand.nextInt(200), rand.nextInt(120), 40, 60); } if(shape.equals(OVAL_SHAPE)){ //設(shè)置畫筆色彩 g.setColor(new Color(220, 100, 80)); g.fillOval(rand.nextInt(200), rand.nextInt(120), 50, 40); } } } }

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 狂野欧美性猛交xxxx免费 | 亚洲小视频 | 级毛片 | 亚洲图片一区 | 久久精品国产一区 | 国产精品成人免费 | 亚洲黄色中文字幕 | 视频在线观看一区二区三区 | 亚洲福利社 | 精品国产96亚洲一区二区三区 | 亚洲制服欧美自拍另类 | 国产成人亚洲精品无广告 | 无码精品一区二区三区免费视频 | jizz免费| 性xxxxbbbb免费播放视频 | 日本高清精品动漫 | 国产未成女年一区二区 | 亚洲免费视频一区二区三区 | 黄色免费观看视频网站 | 国产免费资源高清小视频在线观看 | 国产亚洲欧美另类久久久 | 亚洲视频你懂的 | 人操人| 国产精品高清一区二区 | 国产一区福利 | 97涩色 | 成人 在线欧美亚洲 | 国产一区二区三区视频在线观看 | 日本天堂在线视频 | 男女羞羞网站 | 超清中文乱码精品字幕在线观看 | 亚洲第一福利视频 | 亚洲国产成人久久一区www妖精 | 国产大象视频一区二区 | 亚洲精品国产成人一区二区 | 国产亚洲欧美另类一区二区三区 | 亚洲国产欧洲 | 亚洲va乱码一区二区三区 | 亚洲精品播放 | 五月伊人网 | 亚洲欧洲精品视频在线观看 |