继承体系

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. vs dump调试

    1. dump文件和pdb文件的匹配问题 >> 发布二进制文件时生成的pdb文件一定要保留,只有当发布的二进制文件和pdb文件是同时生成的才好正确调试. 2. dump文件和pdb文件放在 ...

  2. 【JZOJ4745】【NOIP2016提高A组模拟9.3】看电影

    题目描述 听说NOIP2016大家都考得不错,于是CCF奖励省常中了 K 张变形金刚5的电影票奖励OI队的同学去看电影.可是省常中OI队的同学们共有 N(N >= K)人.于是机智的你想到了一个 ...

  3. 初探postman

    第一种:安装postman 扩展程序 第二种:本地 安装postman 登陆进来postman的界面 发送第一个postman请求 将请求保存到集合 未完,待续...

  4. webpack配置vue项目

    npm init 安装webpack,webpack-cli 新建src目录,在src目录下新建main.js

  5. thinkphp php审核后返回信息给html

    1.die("<script>alert('至少选择一个收款方式!');history.back(-1);</script>");

  6. Nuxt.js打造旅游网站第3篇_登录页面的编写

    主要知识点: 1.使用vuex/store管理数据 2.登录注册逻辑 3.Nuxt的本地存储 1.登录页面 1.1登录页面布局 替换pages/user/login.vue的代码如下 <temp ...

  7. Josephus问题Java实现

    package com.qingfeng; /** * @author Administrator * 功能:约瑟夫问题: * 设编号分别为:1,2,...,n的n个人围坐一圈. * 约定序号为k(1 ...

  8. Laravel / PHP 扩展包视频教程

    https://laravel-china.org/courses/laravel-package 每周精选两个以上扩展包进行讲解,涵盖 PHP 和 Laravel 相关的最新.最热.最常用的扩展包. ...

  9. mysql数据库之去重

    利用 distinct :对需要处理的字段进行去重 select  distinct 字段名 from 表名 去重以后 利用group by select * from 表名 group by 字段名 ...

  10. 08查找满足条件的n个数

    第一节.寻找和为定值的两个数 题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出任意一对即可. 例如输 ...