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

原创 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);
}
}

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

相关文章推荐

ENode 2.0 - 深入分析ENode的内部实现流程和关键地方的幂等设计

ENode是一个基于消息的架构,使用ENode开发的系统,每个环节都是处理消息,处理完后产生新的消息。本篇文章我想详细分析一下ENode框架内部是如何实现整个消息处理流程的。为了更好的理解我后面的流程...
  • Gamay
  • Gamay
  • 2017年06月12日 13:44
  • 163

Android版网易云音乐唱片机唱片磁盘旋转及唱片机机械臂动画关键代码实现思路

 Android版网易云音乐唱片机唱片磁盘旋转及唱片机机械臂动画关键代码实现思路 先看一看我的代码运行结果。 代码运行起来初始化状态: 点击开始按钮,唱片机的机械臂匀速...

IOS开发 左右弹出菜单视图 菜鸟纯代码实现思路

网上看了很多关于左右弹出菜单类的效果,现在很多IOS应用都应用这种特效,一是省空间,二是符合当代年轻人的触控体验等,先不说这个,我们聊聊技术上的实现方案 我这里就不说采用第三方组件进行开发了,就单纯的...
  • dangfm
  • dangfm
  • 2014年01月03日 23:21
  • 1274

java实现遍历树形菜单方法——设计思路【含源代码】

在开发中我们经常会遇到左边是树形菜单,右边是一个显示列表,单击左边的树形菜单项时,右边会显示该菜单里面相对应的内容。那么左边的树形菜单怎么从数据库里面获取数据在遍历实现呢?我们不妨来看看设计思路。  ...

下拉菜单思路及实现

下拉菜单的显示与隐藏【css、js、jQuery】

mfc 木马程序思路及实现

  • 2010年08月31日 12:59
  • 4KB
  • 下载

centos下mysql 最新版终于安装成功!备份一下几个关键地方

我本来只是为了搭建简单的LAMP环境,亲自动手,却发现有这么多的问题
  • default7
  • default7
  • 2014年06月13日 22:57
  • 16119

今天终于体会到关键地方为什么用汇编的好处了。

   视频这块的工作都快一年多了。发现在自己还是那么多菜。继续努力。言归正传。         由于我们用的是三星的s5p6443芯片(其实就是阉割版的6440或者s5p6410),没有camera的...
  • bbw2008
  • bbw2008
  • 2011年02月27日 20:39
  • 980

C# static关键字的作用及使用地方

static,何时用,何时不用  ? 学完static以后,同学们都觉得用static修饰的成员特别方便,不用创建对象就可以使用,而不用static修饰的成员倒显得麻烦了,非得创建对象才...

linux守护进程的几个关键地方

创建一个守护进程,有几个关键的步骤,也有几个地方需要注意, 几个关键的步骤有: 1:清除文件创建权限 2:调用fork,然后使父进程退出 3:调用setsid以创建一个新的会话...
  • linmy24
  • linmy24
  • 2013年03月27日 10:43
  • 592
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现菜单程序的一些关键的地方和思路总结
举报原因:
原因补充:

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