java 菜单
继承体系
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 菜单的更多相关文章
- 13、Java菜单条、菜单、菜单项
13.Java菜单条.菜单.菜单项 一般用Java做界面时,都得牵涉到菜单条.菜单.菜单项的设计.菜单项放在菜单里,菜单放在菜单条里,且其字体均可设置. 13.1.菜单条(Menubar) Frame ...
- java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码
java swing MenuItem乱码 2016年12月30日 13:32:08751人阅读 评论(0) 收藏 举报 用java开发一个带有托盘图标的程序, 其它模块的中文显示都是正常的,比如 ...
- Java——菜单组件
import java.awt.Container; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; i ...
- Java中菜单的实现以及画实线与画虚线之间的自由转化
1.Java画线 1 import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.a ...
- [转]java web简单权限管理设计
原文地址:http://blog.csdn.net/zwx19921215/article/details/44467099 最近在做一个网站类型项目,主要负责后台,ui框架选型为jquery eas ...
- java web简单权限管理设计
一套最基本的权限管理包括用户.角色.资源. 数据库设计 我的设计如下: 用户:user 角色:role 用户-角色:user_role 资源:resource(包括上级菜单.子菜单.按钮等资源) 角色 ...
- Notepad++ Java开发环境配置
1. 安装JDK 下载JDK 6下载 http://developers.sun.com.cn/download/java_se.html 运行安装程序,按照屏幕提示完成JDK 6的安装,下面为安装路 ...
- JAVA WEB快速入门之环境搭建
前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...
- Windows中将javac和java两个命令集成到UltraEdit工具栏
1. 目的 将javac和java两个命令集成到UltraEdit工具栏,以方便在UltraEdit中编辑简单的java文件后,能够直接进行编译,运行. 2. 环境 UrtalEdit版本18.20: ...
随机推荐
- text-align:justify在项目中碰到的问题
最近在项目中,使用了一个新的样式属性:text-align:justigy,这个属性在使用过程中遇到了一些小异常,现在总结下. text-align有一个属性值为justify,为对齐之意.其实现的 ...
- SPSS统计分析过程包括描述性统计、均值比较、一般线性模型、相关分析、回归分析、对数线性模型、聚类分析、数据简化、生存分析、时间序列分析、多重响应等几大类
https://www.zhihu.com/topic/19582125/top-answershttps://wenku.baidu.com/search?word=spss&ie=utf- ...
- Linux安装mongoDB步骤和方法
Linux安装mongoDB步骤和方法 下载mongoDB数据库 mongodb-linux-x86_64-3.0.15.tgz 存放到linux文件夹中 ftp软件直接拖上去 解压文件夹(解压后,会 ...
- app被Rejected 的各种原因翻译。这个绝对有用
1. Terms and conditions(法律与条款) 1.1 As a developer of applications for the App Store you are bound b ...
- 为什么printf()用%f输出double型,而scanf却用%lf呢?
之前没有注意过这个问题, 转自: http://book.51cto.com/art/200901/106880.htm 问:有人告诉我不能在printf中使用%lf.为什么printf()用%f输 ...
- 【JZOJ4868】【NOIP2016提高A组集训第9场11.7】Simple
题目描述 数据范围 解法 在暴力枚举的基础上,当n的系数在[0,m/gcd(n,m))时,得到的c是不重复不遗漏的. 设n的系数为x,m的系数为y. 不重复不遗漏性 设x=m/gcd(n,m)+i,那 ...
- 巨蟒python全栈开发-第11阶段 ansible_project5
今日大纲 1.命令展示前端页面实现(下面有个断点) 2.命令下发后端展示
- python 字典索引
- Java练习 SDUT-2737_小鑫の日常系列故事(六)——奇遇记
小鑫の日常系列故事(六)--奇遇记 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 今天,小鑫在山上玩的时候,意外被推下 ...
- 突破!阿里云CDN实现毫秒级全网刷新
通常在某网站使用了CDN节点来实现内容分发加速后,当源站内容更新的时候,CDN刷新系统会通过提交刷新请求将CDN节点上的指定缓存内容强制过期.当用户访问的时候,CDN节点将回源获取最新内容返回给用户, ...