AWT菜单:
AWT菜单: (2)MenuBar和Menu都实现了菜单容器接口,所以MenuBar可用于艳服Menu,而Menu可用于艳服MenuItem(包括Menu和CheckboxMenuItem两个子类对象),Meun还有1个子类:PopupMenu,代表上下文菜单,上下文菜单无需使用MenuBar艳服。 快捷方式通过以下代码创建 (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菜单组件基本类似。 ——————————————————————————————————————————————————————————————————————– 示例程序: ———————————————————————————————————————————————————————— (2)Container类里的update()方法先以组件的背风景填充全部组件区域,然后调用paint()方法重画组件。 fillRect()填充矩形 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,80));
g.fillOval(rand.nextInt(200),50,40);
}
}
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |