继承体系

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. CSS3圆环旋转效果

    html结构: <div class="demo"></div> css结构: .demo{ width:250px; height:250px; bord ...

  2. 阿里云发布SaaS生态战略,成就亿级营收独角兽

    7月26日,在上海举办的阿里云合作伙伴峰会上,阿里云正式发布SaaS生态战略,计划用阿里云的品牌.渠道.资本.方法论.技术加持伙伴,成就亿级营收独角兽. 该生态战略计划招募10家一级SaaS合作伙伴, ...

  3. PHP核心编程--站内搜索

    一.         站内搜索 前台页面: 在index.php页面中添加一个表单,输入搜索框 后台页面: 将index.php另存为search.php 对于搜索的 分页关键代码: 高亮关键字 相关 ...

  4. fusion-io工具--更换fusion-ioSSD无法识别及升级指引

    centos6.5系统,(含fusion-io共7块盘)库存的fusion-io卡需要升级固件才能识别 现在只认到6个盘 fdisk -l 2>/dev/null | grep 'Disk /d ...

  5. [Android]Space控件的应用场景

    Space控件是在Android 4.0中加入,是个空白的view,一般用于填充View组件中的间隙. support-v4包里提供了兼容低版本的Space控件. 源码分析 Space控件源码非常简单 ...

  6. 模板内置函数(HTML)

    模板内置函数 注意:1.html书写避免多余的空格,否则可能无法被识别 2.模板是用来渲染的不要用来处理逻辑 后台ctime=datetime.datatime.now() {{ctime|date: ...

  7. (六)IO流之过滤流

    过滤字节流FilterInputStream和FilterOutputStream BufferedInputStream和BufferedOutputStream    需要使用已存在的节点流来构造 ...

  8. 17个你必须牢记的Win10快捷键

    电脑初学者掌握了盲打技术,可以提高录入速度:游戏玩家掌握了快捷键,可以在瞬息百变的对战中提高生存的机会:而Windows玩家掌握了快捷键,不但可以提高电脑操作速度,更能享受到初级玩家望着你那仰慕的眼神 ...

  9. 中文乱码在java中URLEncoder.encode方法要调用两次解决

    中文乱码在java中URLEncoder.encode方法要调用两次解决 一.场景: 1.我在客户端要通过get方式调用服务器端的url,将中文参数做utf-8编码,需要在js中两次的进行编码,服务器 ...

  10. Flask_Migrate数据库迁移

    migrate数据库迁移 有models,没有迁移仓库.本地新建数据库:首次创建迁移仓库.迁移脚本:执行迁移脚本生成数据库表: python manage.py db init python mana ...