AWT菜单:

AWT菜单:
与创建GUI界面的方式类似,创建AWT菜单就是将菜单条、菜单项和菜单组合在1起。
(1)AWT中的菜单由以下几个类组合而成:
MenuBar 菜单条,菜单的容器
Menu 菜单组件,菜单项的容器
PopupMenu 上下文菜单组件(右键菜单组件)
MenuItem 菜单项组件
CheckboxMenuItem 复选框菜单组件
MenuShortcut 菜单快捷键组件

(2)MenuBar和Menu都实现了菜单容器接口,所以MenuBar可用于艳服Menu,而Menu可用于艳服MenuItem(包括Menu和CheckboxMenuItem两个子类对象),Meun还有1个子类:PopupMenu,代表上下文菜单,上下文菜单无需使用MenuBar艳服。
(3)Menu/MenuItem的构造器都可以接受1个字符串参数,该字符串作为其对应菜单、菜单项上的标签文本。除此以外,MenuItem还可以接受1个MenuShortcut对象,该对象用于指定该菜单的快捷键。MenuShortcut类使用虚拟键代码(而不是字符)来创建快捷键。
例如:Ctrl+A(通常都使用Ctrl键作为快捷键的辅助键)

快捷方式通过以下代码创建
MenuShortcut ms=new MenuShortcut(KeyEvent.VK_A)
如果还需要Shift键的辅助,则可使用以下代码:
MenuShortcut ms=new MenuShortcut(KeyEvent.VK_A,true)
(3)有时候程序还希望对菜单进行分组,将功能类似的菜单分成1组,此时需要使用菜单分隔符。AWT中添加菜单分隔符有以下两种方法
a.调用Menu对象的addSeparator()方法来添加菜单分隔线。
b.使用添加new MenuItem(“-“)的方式添加菜单分隔线。

(4)创建了MenuItem Menu MenuBar 对象以后,调用Menu的add()方法将多个MenuItem组合成菜单(也能够将另外一个Menu菜单组合进来,从而构成2级菜单),在调用MenuBar的add()方法,将多个Menu组合成菜单条,最后调用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("保存");

//创建exitItem菜单项,指定使用Ctrl+x 快捷键
MenuItem exitItem=new MenuItem("退出", new MenuShortcut(KeyEvent.VK_X));
CheckboxMenuItem autoWrap=new CheckboxMenuItem("自动换行");
MenuItem copyItem=new MenuItem("复制");
MenuItem pasteItem=new MenuItem("粘贴");
Menu format=new Menu("格式");

//创建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表达式创建菜单事项监听器
ActionListener menuListener=e -> {
String cmd =e.getActionCommand();
ta.append("单击"+cmd+"菜单"+"\n");
if(cmd.equals("退出")){
System.exit(0);
}
};

//为commonItem菜单项添加事件监听器
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菜单中,从而构成2级菜单
edit.add(format);

//将file edit 菜单加到mb菜单条中
mb.add(edit);
mb.add(file);

//为f窗口设置菜单条
f.setMenuBar(mb);

//以匿名内部类的情势创建监听器对象
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菜单组件不能创建图标菜单,如果希望创建带图标的菜单,则应当使用Swing的菜单组件:JMenuBar,JMenu JMenuItem JpopupMenu Swing的菜单组件和AWT菜单组件基本类似。

——————————————————————————————————————————————————————————————————————–
右键菜单:
(1)右键菜单使用PopupMenu对象表示,创建右键菜单步骤以下:
创建PopupMenu的实例
创建多个menuItem实例,顺次将这些实例加入PopupMenu中
将PopupMenu加入到目标组件中
为需要出现上下文菜单的组件编写鼠标监听器,当用户释放鼠标右键时弹出右键菜单。

示例程序:

————————————————————————————————————————————————————————
在AWT中绘图:
画图的实现原理:
(1)在Component类里提供了以下和绘图有关的方法:
paint(Graphics g)绘制组件的外观
update(Graphics g) 调用paint()方法,刷新组件外观
repaint();调用update()方法,刷新组件外观。
上面3个方法的调用关系为:repaint()调用update()方法,update()方法调用paint()方法。

(2)Container类里的update()方法先以组件的背风景填充全部组件区域,然后调用paint()方法重画组件。
——————————————————————————————————————————————————————
使用Graphics类
(1)Graphics是1个抽象的画笔对象,Graphics可以在组件上绘制丰富多彩的几何图形和位图,其提供的方法以下
drawLine() 绘制直线
drawString()绘制字符串
drawRect()绘制矩形
drawRoundRect()绘制圆角矩形
drawOval()绘制椭圆形状
drawPolygon()绘制多边形边框
drawArc()绘制1段圆弧
drawPolyline()绘制折线

fillRect()填充矩形
fillRoundRect()填充圆角矩形
fillOval()填充椭圆形状
fillPolygon()填充多边形
fillArc()填充圆弧两个端点到中心连线所包围的区域

drawImage()绘制位图

除此以外,Graphics还提供了setColor()和setFont()两个方法来设置画笔的色彩和字体。

(2)AWT专门提供了1个Canvas类作为绘图的画布,程序可以通过创建Canvas的子类,并重写它的paint()方法来实现绘图。
示例:简单的绘图程序

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 ->
{
//设置shape变量为RECT_SHAPE
shape=RECT_SHAPE;
//重画MyCanvas对象,即调用它的repait()方法
drawArea.repaint();
}
);

oval.addActionListener(e ->
{
//设置shape变量为OVAL_SHAPE
shape=OVAL_SHAPE;
//重画MyCanvas对象,即调用它的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()方法,实现绘画
public void paint(Graphics g){
Random rand=new Random();
if(shape.equals(RECT_SHAPE)){
//设置画笔色彩
g.setColor(new Color(220, 100, 80));
//随机画1个矩形块
g.drawRect(rand.nextInt(200), rand.nextInt(120), 40, 60);
}
if(shape.equals(OVAL_SHAPE)){
//设置画笔色彩
g.setColor(new Color(220, 100, 80));
g.fillOval(rand.nextInt(200), rand.nextInt(120), 50, 40);
}
}
}

}

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » AWT菜单:

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡