黑马程序员——图像化界面菜单的基本用法

本文介绍使用Java AWT库创建简单记事本程序的过程。通过实例演示了如何使用MenuBar、Menu及MenuItem等组件构建基本菜单功能,并实现文件的打开、保存操作。

------- android培训java培训、期待与您交流! ----------

   菜单几乎是图像化界面不可或缺的元素之一,下面就对菜单的基本功能和用法做一个梳理,并结合以前学过的知识模仿记事本写一个简单的小程序。

    awt包中跟菜单有关的类主要有三个:MenuBar,Menu和MenuItem。其中MenuItem是Menu的父类。MenuBar是菜单栏的意思,它是直接被窗口文件直接调用的,窗口文件用setMenuBar的方法添加的。而MenuItem和Menu都是要添加到MenuBar中去的,而MenuItem是最终项。MenuBar对象用add(Menu m) 方法添加Menu对象,Menu对象用add(MenuItem mi)方法添加MenuItem(包含其子类Menu)对象。 
    MenuItem的添加监听器的方法是addActionListener(ActionListener l),用的ActionListener。直接覆盖它的actionPerformed(ActionEvent e)方法即可。
    用菜单项编一个简单记事本程序,代码如下:
import java.awt.*;
import java.awt.event.*;
import java.io.*;

class MenuDemo {
	private Frame f = new Frame("记事本");
	private MenuBar mb = new MenuBar();
	private Menu menu_file = new Menu("文件");
	private Menu menu_help = new Menu("帮助");
	private MenuItem mi_open = new MenuItem("打开");
	private MenuItem mi_save = new MenuItem("保存");
	private MenuItem mi_exit = new MenuItem("退出");
	private FileDialog fd_save = new FileDialog(f, "保存", FileDialog.SAVE);
	private FileDialog fd_open = new FileDialog(f, "打开", FileDialog.LOAD);
	private TextArea ta = new TextArea();
	private File file;

	public MenuDemo() {
		init();
	}

	public void init() {
		f.setBounds(300, 200, 500, 400);
		f.setMenuBar(mb);
		f.add(ta);

		mb.add(menu_file);
		mb.add(menu_help);
		menu_file.add(mi_open);
		menu_file.add(mi_save);
		menu_file.add(mi_exit);
		event();
		f.setVisible(true);
	}

	public void event() {
		mi_open.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fd_open.setVisible(true);
				String dir = fd_open.getDirectory();
				String name = fd_open.getFile();
				try {
					file = new File(dir, name);
					if (file.exists()) {
						ta.setText("");
						BufferedReader br = new BufferedReader(new FileReader(
								file));
						String str = null;
						while ((str = br.readLine()) != null)
							ta.append(str + "\r\n");
						br.close();
					}
				} catch (Exception ex) {
				}
			}
		});
		mi_save.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (file == null) {
					fd_save.setVisible(true);
					String dir = fd_save.getDirectory();
					String name = fd_save.getFile();
					System.out.println("file=new File(dir,name);");
					file = new File(dir, name);
					System.out.println(dir + name);
				}
				try {

					BufferedWriter br = new BufferedWriter(new FileWriter(file));
					br.write(ta.getText());
					br.close();
					System.out.println("jaja");
				} catch (Exception ex) {
				}

			}
		});
		mi_exit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public static void main(String[] args) {
		new MenuDemo();
	}
}

运行界面如下:
黑马基础练习之九鈥斺斖枷窕缑娌说サ幕居梅


黑马基础练习之九鈥斺斖枷窕缑娌说サ幕居梅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值