实现菜单程序的一些关键的地方和思路总结

原创 2015年07月07日 13:58:11

整体思路构架:

首先 GUI就是一堆对象 你首先需要做的就是调用他们 让它们出现 但这些对象是死的 你只能把他们搞出来看看 但点的话没反应

其次 让他们活起来就是把事件的监听和反应附上去 这样一个活生生的东西就搞出来了

而这一点是难点


细分思路:

首先 一个GUI对象主要就是两点:位置和大小 至于具体长什么样 都是java给设定好的 我们不用管

其次 需要知道所有GUI的是什么样子的 比较容易混的就是菜单栏那些东西:

最后 附到控件上很简单 但要着重把事件处理好:

这个事件 java的原理是:如何侦测到事件的不要你管 你就只管事件发生了以后如何处理即可

而这个如何处理 就是覆盖相应的方法

主要就是显示和关闭

如果还需要一些读取写入的操作 就要引入io的相关方法 

记住:

MenuBar是开始插入页面布局引用邮件审阅试图加载项Acrobat那一行

Menu是开始或者插入或者页面布局或者…中的一个

MenuItem是剪贴板 字体 段落

 

其中Menu和MenuItem可以相互叠加(子菜单和菜单条目就是这么来的)


/*
需求:
玩儿一下Menu


*/


/**
这是一个自定义的菜单工具


@author Moriarty
@version V1.0


*/
package mymenu;


import java.awt.*;
import java.awt.event.*;
import java.io.*;


public class MenuDemo 
{
/**
主函数


*/
public static void main(String[] args) 
{
new MenuDemo();
}


private Frame f = new Frame("我就是你们的爹 窗体!");
private MenuBar mb = new MenuBar();
private Menu m1 = new Menu("菜单");
private MenuItem mitem1 = new MenuItem("打开");
private MenuItem mitem2 = new MenuItem("退出");
private MenuItem mitem3 = new MenuItem("保存");
private Menu m2 = new Menu("菜单另一个选项且有子菜单");
private FileDialog openfd = new FileDialog(f,"打开文件",FileDialog.LOAD);
private FileDialog savefd = new FileDialog(f,"保存文件",FileDialog.SAVE);

private TextArea ta = new TextArea();
/**
构造函数


*/
MenuDemo()
{
initiate();
}
/**
初始化


*/
public void initiate()
{
f.setBounds(400,200,500,500);
f.setLayout(new FlowLayout());
f.setMenuBar(mb);   //注意这个方法的名字 背住!
mb.add(m1);
m1.add(mitem1);
m1.add(mitem3);
m1.add(m2);  // 注意 menu对象的直接相互叠加 而不是menu叠加menuitem再叠加menu
m2.add(mitem2);
f.add(ta);


myEvent();
f.setVisible(true);
}
/**
事件和处理方式
*/
public void myEvent()
{
mitem1.addActionListener(new ActionListener() //注意这里是菜单选项的事件 
//不是文件对话框的事件!
{
public void actionPerformed(ActionEvent e)
{
sop("打开文件对话框被动了啊");
openfd.setVisible(true);


String path = openfd.getDirectory();
String fileName = openfd.getFile();


if ( path==null || fileName==null)
{
return;
}


ta.setText("");


File f = new File(path,fileName);


try
{
BufferedReader bufr = new BufferedReader(new FileReader(f));


String line = null;


while ((line = bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}


bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException("读取失败");
}
}
});


f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
sop("点击窗体右上方的按钮导致的窗体关闭");
System.exit(0);
}
});


mitem2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
sop("用子菜单的关闭选项来关闭窗体");
System.exit(0);
}
});


mitem3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent exx)
{
sop("保存文件夹对话框被动了啊");
savefd.setVisible(true);

String dir = savefd.getDirectory();
String filename = savefd.getFile();


if (dir==null|| filename==null )
{
return ;
}


File f = new File(dir,filename);


try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(f));


String text = ta.getText();


bufw.write(text);


bufw.close();
}
catch (IOException exxx)
{
throw new RuntimeException("写入错误");
}
}
});
}
/**


专门用来打印
*/
public static void sop(Object obj)
{
System.out.println(obj);
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

《人月神话》摘录

胸有成竹1. 对常用编程语句而言,生产率似乎是固定的。这个固定的生产率包括编程中需要注释,并可能存在错误的情况。2. 使用适当的高级编程语言,编程的生产率可以提高5倍。削足适履1. 为了满足目标,每个...
  • xinxingwuzhi
  • xinxingwuzhi
  • 2011年04月08日 16:17
  • 131

需求分析的关键方法

对需求人员的要求: 需求人员了解开发会很大程度上降低需求成本、开发成本。 往前推进的方法: 原型驱动、文档驱动的好处就是在于锁定用户的注意力集中到一点,不让他天马行空;还有一个好处就是可以发现...
  • ClamReason
  • ClamReason
  • 2015年08月20日 09:07
  • 971

oled多级菜单实现方法

1、首先定义一个机构体如下 typedef struct    {      unsigned char current;      unsigned chaup;//上键      uns...
  • a369000753
  • a369000753
  • 2016年05月26日 18:52
  • 3037

做好软件测试的一些关键点

1.测试人员必须经过测试基础知识和理论的相关培训。2.测试人员必须熟悉系统功能和业务。3.测试必须事先要有计划,而且测试方案要和整个项目计划协调好4.必须事先编写测试用例,测试执行阶段必须根据测试用例...
  • Rzhghost
  • Rzhghost
  • 2006年07月07日 09:40
  • 1388

关于微信小程序的一点个人总结

个人对微信小程序开发的一点见解,目前主要写了:微信小程序和H5的区别、微信小程序开发注意事项微信小程序和H5的区别。...
  • dark_gmn
  • dark_gmn
  • 2017年05月05日 16:03
  • 568

单片机LCD简单多级菜单实现

多年以前,我写过一篇12864lcd显示屏多级菜单代码实现 博客,当时草率的实现了一个菜单画面,然并没有实际用处,因为作为菜单的选取响应动作并没有在其中实现。这个就是补充了。...
  • ymsunshine
  • ymsunshine
  • 2016年12月11日 23:36
  • 3815

编程思想与技术总结

不是天才,但我相信,通过有效的方法和训练,以及持之以恒地积累,完全是可以成为一名出色的开发者的。那么,到目前为止,掌握了多少思想、方法和技术可以用于开发程序、处理软件开发过程中所遇到的问题呢?不妨作下...
  • shuqin1984
  • shuqin1984
  • 2016年05月29日 21:35
  • 4122

PHP+JS无限级可伸缩菜单详解(递归方法)

PHP+JS无限级可伸缩菜单详解(递归方法)一般在CMS系统后台中都要用到的类别管理部分的精华--无限级分类菜单,对于新手来说,这个可能有一定难度,但是今天听完我细细道来,相信以后大家就都会弄这东东了...
  • fkedwgwy
  • fkedwgwy
  • 2008年06月18日 13:37
  • 3098

项目管理--关键链方法

关键链项目管理(Critical Chain Project Management,CCPM)方法是约束理论(Theory of Constraints,TOC)在项目管理中的应用。约束理论的核心思想...
  • lazy_tiger
  • lazy_tiger
  • 2009年02月27日 14:13
  • 3422

struts2重要知识点总结(2)

Action的配置 的配置 通过上面的示例可以看出,Action需要在struts.xml中配置才可以使用,而且Action应该配置成为元素的子元素,那么元素的功能是什么呢? 元素可以把逻辑上相...
  • u013730093
  • u013730093
  • 2015年12月13日 13:54
  • 873
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现菜单程序的一些关键的地方和思路总结
举报原因:
原因补充:

(最多只允许输入30个字)