继承体系

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. 关于android SDK安装Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml出错

          最近SDK出问题了,然后在google下载了一个android-sdk-windows.rar,然后点击SDK Manager,结果一直不能刷新API Level,然后就开始在网上找了好多 ...

  2. 纯CSS3实现Metro Icon

    在线演示 本地下载

  3. 寒哥带你深入了解下Swift中的Value Type

    http://www.cocoachina.com/swift/20150923/13539.html 关于开发到底使用ValueType 值类型还是Reference Type 引用类型,关于这个, ...

  4. 管理神话之"我还能做大量的技术工作"

    “你要知道,如果你想做好一件事,你就必须自己动手.”Clive一边咕哝着,一边走回自己的房间. Susan原本在埋头工作.她抬起头来,叹了口气.然后起身,跟着Clive穿过走廊,来到他的房间门口.她敲 ...

  5. bzoj1821 部落划分

    Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...

  6. iOS学习系列 - 扩展机制category与associative

    iOS学习系列 - 扩展机制category与associative category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方 ...

  7. C++:for范围循环特点--自我理解

    for(declaration : expression)statement for(xx-type i : P)....其一:for范围类型循环在循环前,可能会对p所在的队列里,对每一个对象进行一次 ...

  8. 2018-2-13-win10-uwp-获取按钮鼠标左键按下

    title author date CreateTime categories win10 uwp 获取按钮鼠标左键按下 lindexi 2018-2-13 17:23:3 +0800 2018-2- ...

  9. docker查看运行容器详细信息

    使用docker ps命令可以查看所有正在运行中的容器列表, 使用docker inspect命令我们可以查看更详细的关于某一个容器的信息. $ docker inspect 容器id/image

  10. 从零学React Native之11 TextInput

    TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式. 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本 ...