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: ...
随机推荐
- NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)的方法
NFS相关介绍 一.NFS简介 1. NFS(Network File System):NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统. 2. 起源:最早是由SUN公司研发 ...
- Javascript一些要点记录
1. == 比较,它会自动转换数据类型再比较 === 比较,它不会自动转换数据类型,如果数据类型不一致,返回false 大部分时候应该使用===来比较2. 使用'use strict'来强制通过var ...
- CSS3--关于z-index不生效问题
最近写CSS3和js结合,遇到了很多次z-index不生效的情况: 1.在用z-index的时候,该元素没有定位(static定位除外) 2.在有定位的情况下,该元素的z-index没有生效,是因为该 ...
- 为什么学习React Native三点原因
React Native不到两岁,兼容Android平台刚刚1年.我学习React Native其实也就不到1年,不算长,也不算短. Paul Graham在文章中写过:大多数人真正注意到你的时候,不 ...
- 24种编程语言的Hello World程序
24种编程语言的Hello World程序 这篇文章主要介绍了 24 种编程语言的 Hello World 程序,包括熟知的 Java.C 语言.C++.C#.Ruby.Python.PHP 等编程语 ...
- jmeter进行的接口测试和压力测试
1.接口测试 接口测试的内容我们之前已经讲过,values-key形式和json串传参形式: 包括的协议有http,webservice(soap),jdbc数据库,java请求 2.参数化 定义:把 ...
- aspcms安装所遇到的问题
aspcms标签:http://biaoqian.iasp.com.cn/ 1.报错:An error occurred on the server when processing the URL. ...
- LeetCode113 Path Sum II
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- 【BootStrap】--具有增删改查功能的表格Demo
[BootStrap]--具有增删改查功能的表格Demo 目录(?)[+] 前言 版本一 样式 代码 版本二 样式 代码 版本三 样式 代码 总结 前言 bootstrap的表格样式,有类似EasyU ...
- 从零学React Native之06flexbox布局
前面我们接触了好多React Native代码, 并没有介绍RN中的组件具体是如何布局的,这一篇文章,重点介绍下flexbox布局. 什么是flexbox布局 React中引入了flexbox概念,f ...