继承体系

MenuBar,Menu,MenuItem之间的关系:

先创建菜单条,再创建菜单,每一个菜单中建立菜单项。

也可以菜单添加到菜单中,作为子菜单。

通过setMenuBar()方法,将菜单添加到Frame中。

package june610;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

//最后导出jar包,用eclipse,必须要指定main函数!!不能直接点击finished!!!

/**

* 菜单的结构MenuBar(相当于一个环境,f.set、、)

*  -->Menu(菜单,m.add、、可以添加自己,也可以添加Item)

*  -->MenuItem(条目 )

*/

class MyMenuDemo{

private Frame f;//首先声明对象的好处,全局可以调用!

private MenuBar mb;

private Menu m,subm;

private MenuItem mi,close,save,open;

private FileDialog openDia,saveDia;

private TextArea ta;

private File file;

MyMenuDemo(){

f = new Frame("我的电脑");

f.setBounds(400, 150, 500, 500);

//备注:此时没有设置布局管理器类型(因为不设置的话下面的TextArea会很爽!)

mb = new MenuBar();

m = new Menu("文件");

save = new MenuItem("保存");

open = new MenuItem("打开");

subm = new Menu("子菜单");

close = new MenuItem("退出");

mi = new MenuItem("子菜单2");

openDia = new FileDialog(f, "我的打开", FileDialog.LOAD);//加载

saveDia = new FileDialog(f, "我的保存", FileDialog.SAVE);//保存

ta = new TextArea();

f.setMenuBar(mb);//添加

mb.add(m);

subm.add(mi);

m.add(subm);

m.add(open);

m.add(save);

m.add(close);

f.add(ta);

f.setVisible(true);

init();

}

public  void init(){

//打开文件,弹出对话框

open.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

openDia.setVisible(true);

String path = openDia.getDirectory();

String name = openDia.getFile();

//ta.append(path+"-----"+name+"\n");

if(path==null || name==null)

return ;

ta.setText("");//每次开始都清空

file = new File(path, name);

try {

BufferedReader br = new BufferedReader(new FileReader(file));//缓冲流

String line = null;

while((line = br.readLine()) != null){

ta.append(line+"\n");

}

br.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

});

//保存文件,弹出对话框!

save.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

//注意问题:只有文件第一次保存(不存在)的时候才需要你去弹出对话框,以后只保存,不弹出!

if(file == null){

saveDia.setVisible(true);//不存在才弹,创建文件

String path = saveDia.getDirectory();

String name = saveDia.getFile();

if(name == null || path == null)

return;

//目录和名字正确,但是文件不存在,就新建一个文件!

file = new File(path,name);

}

try {

BufferedWriter bw = new BufferedWriter(new FileWriter(file));

String s = ta.getText();

bw.write(s);

bw.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

});

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

close.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

}

}

public class MenuDemo {

public static void main(String[] args) {

new MyMenuDemo();

}

}

java 菜单的更多相关文章

  1. 13、Java菜单条、菜单、菜单项

    13.Java菜单条.菜单.菜单项 一般用Java做界面时,都得牵涉到菜单条.菜单.菜单项的设计.菜单项放在菜单里,菜单放在菜单条里,且其字体均可设置. 13.1.菜单条(Menubar) Frame ...

  2. java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码

    java swing MenuItem乱码 2016年12月30日 13:32:08751人阅读 评论(0) 收藏 举报   用java开发一个带有托盘图标的程序, 其它模块的中文显示都是正常的,比如 ...

  3. Java——菜单组件

    import java.awt.Container; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; i ...

  4. Java中菜单的实现以及画实线与画虚线之间的自由转化

    1.Java画线 1 import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.a ...

  5. [转]java web简单权限管理设计

    原文地址:http://blog.csdn.net/zwx19921215/article/details/44467099 最近在做一个网站类型项目,主要负责后台,ui框架选型为jquery eas ...

  6. java web简单权限管理设计

    一套最基本的权限管理包括用户.角色.资源. 数据库设计 我的设计如下: 用户:user 角色:role 用户-角色:user_role 资源:resource(包括上级菜单.子菜单.按钮等资源) 角色 ...

  7. Notepad++ Java开发环境配置

    1. 安装JDK 下载JDK 6下载 http://developers.sun.com.cn/download/java_se.html 运行安装程序,按照屏幕提示完成JDK 6的安装,下面为安装路 ...

  8. JAVA WEB快速入门之环境搭建

    前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...

  9. Windows中将javac和java两个命令集成到UltraEdit工具栏

    1. 目的 将javac和java两个命令集成到UltraEdit工具栏,以方便在UltraEdit中编辑简单的java文件后,能够直接进行编译,运行. 2. 环境 UrtalEdit版本18.20: ...

随机推荐

  1. Spring_总结

    spring配置Bean 配置形式 基于XML文件的方式 属性注入 构造注入 泛型依赖注入 基于注解的方式 配置方式 全类名(反射) 通过工厂方法 FactoryBean 字面值 <![CDAT ...

  2. python的解释器类型

    Python解释器 当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规 ...

  3. pl/sql基础知识—过程快速入门

    n  过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数可以将执行部分的数据传递 ...

  4. PHPCMS快速建站系列之常用标签

    <span class="Nmore"><a href="/index.php?m=content&c=index&a=lists&am ...

  5. React 入门笔记

    一.什么是React React: A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES 上面的话直译过来就是,React是一个用于构建用户界面的Java ...

  6. Python学习之路5☞文件处理

    一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 正趣果上果 Interesting fruit fruit 词:郭婞 曲:陈粒 编曲/混音/和声:燕池 萧: ...

  7. odoo 内置协议说明列表

    odoo 内置协议说明列表 在以下目录. /odoo/odoo/addons/base/models/ir_module.py license = fields.Selection([ ('GPL-2 ...

  8. switch范围判断

    <?php function grade($grade){ switch (true) { case $grade>=90: echo 'A'; break; case $grade> ...

  9. HTML5入门指南

    1.HTML5到底是什么? HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定.目标是取代1999年所制定的HTML 4.01和XHTML 1.0标准,以期能在互联 ...

  10. 通过反射 拿到方法 Day25

    package com.sxt.method1; /* * 通过反射 拿到方法 */ import java.lang.reflect.Method; import java.lang.reflect ...