实现菜单程序的一些关键的地方和思路总结
来源:互联网 发布:如何查苹果手机mac地址 编辑:程序博客网 时间:2024/06/06 01:53
整体思路构架:
首先 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);
}
}
- 实现菜单程序的一些关键的地方和思路总结
- epoll的一些关键点和总结(一)
- epoll的一些关键点和总结(二)
- layerfsd实现的一些思路
- 菜单程序的实现..
- 实现ios常见菜单效果的思路
- 面试时的一些关键技巧总结
- 一种密码实验平台的设计方案的关键实现思路
- 自动更新程序的实现思路
- 个人总结的一些应该注意和学习的一些地方
- 学习程序的一些饲思路
- 程序PM的一些感慨和总结
- 模拟OICQ的实现思路和核心程序(三)
- 中文分词一些思路的总结
- 做算法题思路的一些总结
- 分享下做地方站的思路和方法
- 用C++实现LINQ的一些思路
- 计算机底层实现的一些理解思路
- 产品经理常用工具
- JSON序列化自动过滤NULL值
- PAT 1031 Hello World for U
- 2012年5月SAT香港真题解析
- 数据库主键的设计和思考
- 实现菜单程序的一些关键的地方和思路总结
- C#第六次作业:猜猜看
- H.264码率控制算法研究及JM相应代码分析(一)
- JSR-303规范,Bean Validation(spring mvc中如何校验)
- COM组件初始化
- unity3d的坐标总结
- css-display:inline-block引起的上边距差1px
- iOS开发过程中常用的方法
- 2012年5月SAT香港真题解析