代码:

 import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyMenu
{
//定义该窗体所需的组件,方便其他函数引用
private Frame f;
private Button btn; //按钮
private Button btn1;
private Label label; //标签
private TextArea ta ; //文本区域
private Menu fileMenu; //菜单
private MenuBar bar;
private MenuItem openItem,saveItem,closeItem; //子菜单 private FileDialog openDia,saveDia; //文件对话框
private File file; //文件
//构造器
MyMenu(){
init();
}
public void init(){
f = new Frame("我的窗体及菜单框架");
/*(所有静态属性设置)*/
//对窗体进行基本设置
f.setBounds(100,50,1200,1000);
f.setLayout(new FlowLayout());
f.setBackground(Color.gray);
//组件(自定义)
btn = new Button("退出");
btn1 = new Button("按钮1");
label = new Label("这是一个文本",Label.CENTER);
ta = new TextArea("test",30,70,1);//最后一个参数设置为显示滚动条,1显示垂直滚动条,2显示横向滚动条,0全部显示。 bar = new MenuBar();
fileMenu = new Menu("文件");
//定义菜单项
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
closeItem = new MenuItem("退出");
//将菜单项添加进菜单
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.addSeparator();
fileMenu.add(closeItem);
//将菜单已添加进菜单栏
bar.add(fileMenu);
f.setMenuBar(bar);
//添加文件对话框
openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
//组件属性设置
label.setBackground(Color.pink);
label.setFont(new Font("Dialog", Font.BOLD, 12));
label.setSize(300,200);
//将组件添加到frame中
f.add(label);
f.add(ta);
f.add(btn);
f.add(btn1);
//加载窗体事件(所有响应事件)
myEvent(); //显示窗体
f.setVisible(true);
} private void myEvent(){
/*规则:
xxxListener(new xxxAdapter())
xxxEvent e
*/
//窗体关闭事件
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//按钮响应事件
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
//按钮响应
System.out.println("退出,按钮干的");
System.exit(0);
}
});
//按钮1响应事件
btn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
//获取文本内容并显示
String taContent =ta.getText();
label.setText(taContent);
}
});
//菜单事件:添加保存活动监听,
saveItem.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{
//保存就是直接开启对话框
//if(file==null)
//{
saveDia.setVisible(true); String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
if(dirPath==null || fileName==null)
return ;
file = new File(dirPath,fileName);
//} try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file)); String text = ta.getText(); bufw.write(text);
//bufw.flush();
bufw.close();
}
catch (IOException ex)
{
throw new RuntimeException();
} }
}); openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
// System.out.println(dirPath+"..."+fileName);
if(dirPath==null || fileName==null)
return ; ta.setText("");
file = new File(dirPath,fileName); try
{
BufferedReader bufr = new BufferedReader(new FileReader(file)); String line = null; while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
} bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException("读取失败");
} }
}); closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
} public static void main(String[] args){
new MyMenu();
}
}

效果:

最新文章

  1. word2013删除下载的模板
  2. eclipse如何导入java项目文件
  3. linux下解压war格式的包
  4. mySQL 增量备份方案(转)
  5. VB最新使用教程
  6. Java基本类型
  7. Mysql table ful
  8. Asp.Net mvc筛选器中返回信息中断操作
  9. poj1936---subsequence(判断子串)
  10. HTML第一耍 标题 段落 字体等标签
  11. (zhuan) Paper Collection of Multi-Agent Reinforcement Learning (MARL)
  12. 适应c++ 新特性 - 与我 - 多年传统方式开发(新特性参考微软标准:https://msdn.microsoft.com/zh-cn/library/hh279654.aspx)
  13. Linux bash笔记
  14. 【刷题】LOJ 6001 「网络流 24 题」太空飞行计划
  15. 【IntelliJ IDEA】idea上提交代码到GitHub,已经提交了 但是GitHub上却没有的解决办法
  16. delphi文件名获取方法
  17. 如何面试Web前端开发
  18. Mac 开发装机必备
  19. [Linux] Boot分区满了的处理方法 The volume "boot" has only 0 bytes disk space remaining
  20. svm+voting

热门文章

  1. linux 驱动入门5
  2. iOS 为label添加删除线
  3. Mac下node.js卸载方法收集
  4. Extjs的架构设计思考,单页面应用 or 多页面?
  5. mysql 千万量级的表的优化
  6. STM32启动模式及API(转)
  7. Docker学习计划
  8. 判断js对象的数据类型,有没有一个最完美的方法?
  9. Linux 系统分区
  10. linux下安装openmpi