Java 窗口菜单 jvcd.java

程序设计: 谢山水 2003.8.18

主菜单
Menu

文件
mn1

图形
mn2

图像
mn3

计算
mn4

帮助
mn5

子菜单

MenuItem

新建
mi11

打开
mi12

保存
mi13

退出
mi14

时钟
mi21

彩条
mi22

正弦
mi23

花叶
mi24

山水
mi31

风光
mi32

视频
mi33

正弦
mi41

余弦
mi42

关于
mi51

// Java 窗口菜单 jvcd.java 程序设计: 谢山水 2003.8.18

// 显示窗口菜单:创建窗口框架—创建菜单栏—创建主菜单—创建子菜单—

// 子菜单添加到—主菜单添加到—菜单栏添加到—窗口框架—显示窗口框架。

// 实现菜单退出事件:定义退出子菜单项—监听菜单事件—调用处理程序—处理菜单事件。

import java.awt.*;
//导入java语言awt抽象窗口工具包的所有类
import java.awt.event.*;

// 1.Java 菜单 jvcd 继承框架 Frame
public class jvcd extends Frame{

// 2.创建菜单栏,主菜单,子菜单
MenuBar mb = new MenuBar();

Menu mn1 = new Menu(); //创建[文件]主菜单
MenuItem mi11 = new MenuItem(); //创建[新建]子菜单
MenuItem mi12 = new MenuItem();
MenuItem mi13 = new MenuItem();
MenuItem mi14 = new MenuItem();

Menu mn2 = new Menu(); //创建[图形]主菜单
MenuItem mi21 = new MenuItem(); //创建[时钟]子菜单
MenuItem mi22 = new MenuItem();
MenuItem mi23 = new MenuItem();
MenuItem mi24 = new MenuItem();

Menu mn3 = new Menu(); //创建[图像]主菜单
MenuItem mi31 = new MenuItem(); //创建[山水]子菜单
MenuItem mi32 = new MenuItem();
MenuItem mi33 = new MenuItem();

Menu mn4 = new Menu(); //创建[计算]主菜单
MenuItem mi41 = new MenuItem(); //创建[正弦]子菜单
MenuItem mi42 = new MenuItem();

Menu mn5 = new Menu(); //创建[帮助]主菜单
MenuItem mi51 = new MenuItem(); //创建[关于]子菜单

// 3.创建面板,画板实例,异常处理
Panel pn = new Panel(); //面板实例 pn
DrawPanel dp = new DrawPanel(); //画板实例 dp

public jvcd(){ //构造方法
try{jbInit();} //初始化界面
catch(Exception e)
{e.printStackTrace();} //异常处理
}

// 4.处理事件:关闭窗口
public boolean handleEvent(Event e){
switch(e.id){
case Event.WINDOW_DESTROY:System.exit(0);
return true;
default:return false;
}
}

// 5.设置AWT组件参数
private void jbInit() throws Exception{ 

// 6.当前窗框添加菜单栏
this.setMenuBar(mb);

mn1.setLabel("文件"); //主菜单标签
mi11.setLabel("新建"); //子菜单标签
mi12.setLabel("打开");
mi13.setLabel("保存");
mi14.setLabel("退出");

mn2.setLabel("图形"); //主菜单标签
mi21.setLabel("时钟"); //子菜单标签
mi22.setLabel("彩条");
mi23.setLabel("正弦");
mi24.setLabel("花叶");

mn3.setLabel("图像"); //主菜单标签
mi31.setLabel("山水"); //子菜单标签
mi32.setLabel("风光");
mi33.setLabel("视频");

mn4.setLabel("计算"); //主菜单标签
mi41.setLabel("正弦"); //子菜单标签
mi42.setLabel("余弦");

mn5.setLabel("帮助"); //主菜单标签
mi51.setLabel("关于"); //子菜单标签

pn.setLayout(null); //面板布局取消
pn.setBackground(SystemColor.menu);

// 7.菜单栏添加主菜单
mb.add(mn1); // 文件
mb.add(mn2); // 图形
mb.add(mn3); // 图像
mb.add(mn4); // 计算
mb.add(mn5); // 帮助

// 8.主菜单栏添加菜单项 
mn1.add(mi11);  // 新建
mn1.add(mi12);
mn1.add(mi13);
mn1.add(mi14);

mn2.add(mi21); // 时钟
mn2.add(mi22);
mn2.add(mi23);
mn2.add(mi24);

mn3.add(mi31); // 山水
mn3.add(mi32);
mn3.add(mi33);

mn4.add(mi41); // 正弦
mn4.add(mi42);

mn5.add(mi51); // 关于

// 9.窗口框架添加面板,画板
this.add(pn,BorderLayout.CENTER);
this.add(dp,BorderLayout.CENTER);

// 10.处理菜单事件 
mi14.addActionListener(new java.awt.event.ActionListener(){
  public void actionPerformed(ActionEvent e){
//监听菜单事件
mi14_actionPerformed(e); //调用处理程序
}
});
}

void mi14_actionPerformed(ActionEvent e){
System.exit(0); //系统退出
}

// 11.主程序 
public static void main(String[] args){
jvcd awtShowFrame = new jvcd();
awtShowFrame.setSize(800,600);
awtShowFrame.setTitle
("Java 语言程序设计 窗口框架菜单 谢山水 2003.8.18");
awtShowFrame.show();
}
}

// 12.定义画板类,定义画图方法
class DrawPanel extends Panel {
public void paint(Graphics g) { // 定义画图方法
g.setColor(new Color(255,0,255)); // 设置画笔为紫色
g.drawRect(5,5,780,540); // 画图纸外边框

g.setColor(new Color(0,133,255)); // 设置画笔为青色
g.drawRect(15,15,760,520); // 画图纸内边框
g.drawRect(16,16,758,518);
g.drawRect(17,17,756,516);
g.drawRect(18,18,754,514);

// 13.输出文字
Font fnt20 = new Font("TimesRoman",Font.PLAIN,20);
Font fnt40 = new Font("宋体",Font.BOLD,40); // 创建字体对象

g.setFont(fnt20); // 设置当前字体
g.setColor(new Color(255,0,255));
g.drawString("Java TXCXSJ",340,170); // 紫字

g.setFont(fnt40); // 设置当前字体
g.setColor(new Color(0,0,255));
g.drawString("Java 语言图形程序设计",190,260);// 蓝字

g.setFont(fnt20); // 设置当前字体
g.setColor(new Color(0,133,0));
g.drawString("程序设计: 谢山水",320,340); // 绿字
g.drawString("2003年8月18日",340,390);

// 14.设置背景橙色.
setBackground(new Color(133,255,0));

}
}