D2D网络数据存储器开发全过程(3)
2007-12-22 17:12
211 查看
第三章:
继续上面的,我们开始修饰我们的主窗口。
系统退出的时候,我们可能需要添加些退出处理工作,这里我们可以修改下jframe默认的关闭窗口事件。
//取消关闭按钮的其他事件
this.setDefaultCloseOperation(0);
//添加程序退出事件
this.addWindowListener(
new WindowAdapter()...{
public void windowClosing(WindowEvent e)
...{
DTDAction.safeExit();
}
}
);
可以看到。我们这里又使用了一个新类,DTDAction,这个类是用来存放大部分的公用函数用的。比如,日后的编码解码,加密,压缩解压缩等等。。。我们同样把它放在comm包中。
我们在DTDInfo类中,添加些提示信息:
public static String getMainFrame_CloseDialog_Title()...{
String[] tmp = ...{
"退出",
"exit"
};
return tmp[languageFlag];
}
public static String getMainFrame_CloseDialog_Tips()...{
String[] tmp = ...{
"您确认退出吗?",
"Are you sure to exit ?"
};
return tmp[languageFlag];
}
先简单的建立一个DTDAction的关闭退出事件,以后退出需要做的事情,都可以再这里做了。
DTDAction.java
package comm;
import javax.swing.JOptionPane;
/** *//**
* 系统的公共函数库
* @author vicken
*
*/
public class DTDAction ...{
// 安全退出程序
public static void safeExit()...{
int choose = JOptionPane.showConfirmDialog(null,DTDInfo.getMainFrame_CloseDialog_Tips(),DTDInfo.getMainFrame_CloseDialog_Title(),JOptionPane.YES_NO_OPTION);
if(choose==JOptionPane.YES_OPTION)
...{
try...{
//退出前的处理工作
//saveSystemConfig();
}catch(Exception exc)...{
exc.printStackTrace();
}
System.exit(0);
}
}
}
这时候,我们点击关闭系统的那个叉叉的时候,系统就会提示,是否真的退出了。
呵呵,专业的软件,是否都需要一个 菜单栏呢? 呵呵,打开一般的工具软件,都有吧。所有少了它可不行。现在虽然还没有想到,需要添加些什么菜单项再里面,但是总是要加,就得先加上不是。java中实现menu很简单。就是添加一个 JMenuBar,这时候,我们可以建立一个自己的DTDMenuBar,继承这个JMenuBar,然后来修改。
先在MainFrame的构造函数中,添加代码
//添加菜单栏
DTDMenuBar menuBar = new DTDMenuBar();
this.setJMenuBar(menuBar);
现在我们开始来实现DTDMenuBar。
package menu;
import javax.swing.JMenuBar;
public class DTDMenuBar extends JMenuBar...{
}
为了将所有的menu事件集中管理,我们再建立一个类MenuAction。
这时候的代码:
MenuAction.java
package menu;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import comm.DTDAction;
public class MenuAction extends AbstractAction...{
private String objname = "";
public MenuAction(String name,String objname)...{
super(name);
this.objname = objname;
}
public void actionPerformed(ActionEvent arg0) ...{
if(objname.equals("Exit"))...{
DTDAction.safeExit();
}
}
}
DTDMenuBar.java
package menu;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.Action;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import comm.DTDInfo;
public class DTDMenuBar extends JMenuBar...{
public DTDMenuBar()...{
JMenu fileMenu = new JMenu(DTDInfo.getDTDMenuBar_File());
fileMenu.setMnemonic('F');
//添加事件
Action exitAction = new MenuAction(DTDInfo.getDTDMenuBar_Exit(),"Exit");
JMenuItem exitItem = fileMenu.add(exitAction);
exitItem.setMnemonic('x');
exitItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_X,InputEvent.CTRL_MASK));
fileMenu.add(exitItem);
this.add(fileMenu);
}
}
运行我们的程序,我们得到了一个带下拉条的file菜单,里面有一个退出程序的菜单选项。
而且我们可以很容易的修改 DTDMenuBar MenuAction 来很容易的添加新的菜单事件触发和实现。
呵呵,打个包,给个源代码。
http://www.018008.com/v/D2D1.0_2.rar
继续上面的,我们开始修饰我们的主窗口。
系统退出的时候,我们可能需要添加些退出处理工作,这里我们可以修改下jframe默认的关闭窗口事件。
//取消关闭按钮的其他事件
this.setDefaultCloseOperation(0);
//添加程序退出事件
this.addWindowListener(
new WindowAdapter()...{
public void windowClosing(WindowEvent e)
...{
DTDAction.safeExit();
}
}
);
可以看到。我们这里又使用了一个新类,DTDAction,这个类是用来存放大部分的公用函数用的。比如,日后的编码解码,加密,压缩解压缩等等。。。我们同样把它放在comm包中。
我们在DTDInfo类中,添加些提示信息:
public static String getMainFrame_CloseDialog_Title()...{
String[] tmp = ...{
"退出",
"exit"
};
return tmp[languageFlag];
}
public static String getMainFrame_CloseDialog_Tips()...{
String[] tmp = ...{
"您确认退出吗?",
"Are you sure to exit ?"
};
return tmp[languageFlag];
}
先简单的建立一个DTDAction的关闭退出事件,以后退出需要做的事情,都可以再这里做了。
DTDAction.java
package comm;
import javax.swing.JOptionPane;
/** *//**
* 系统的公共函数库
* @author vicken
*
*/
public class DTDAction ...{
// 安全退出程序
public static void safeExit()...{
int choose = JOptionPane.showConfirmDialog(null,DTDInfo.getMainFrame_CloseDialog_Tips(),DTDInfo.getMainFrame_CloseDialog_Title(),JOptionPane.YES_NO_OPTION);
if(choose==JOptionPane.YES_OPTION)
...{
try...{
//退出前的处理工作
//saveSystemConfig();
}catch(Exception exc)...{
exc.printStackTrace();
}
System.exit(0);
}
}
}
这时候,我们点击关闭系统的那个叉叉的时候,系统就会提示,是否真的退出了。
呵呵,专业的软件,是否都需要一个 菜单栏呢? 呵呵,打开一般的工具软件,都有吧。所有少了它可不行。现在虽然还没有想到,需要添加些什么菜单项再里面,但是总是要加,就得先加上不是。java中实现menu很简单。就是添加一个 JMenuBar,这时候,我们可以建立一个自己的DTDMenuBar,继承这个JMenuBar,然后来修改。
先在MainFrame的构造函数中,添加代码
//添加菜单栏
DTDMenuBar menuBar = new DTDMenuBar();
this.setJMenuBar(menuBar);
现在我们开始来实现DTDMenuBar。
package menu;
import javax.swing.JMenuBar;
public class DTDMenuBar extends JMenuBar...{
}
为了将所有的menu事件集中管理,我们再建立一个类MenuAction。
这时候的代码:
MenuAction.java
package menu;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import comm.DTDAction;
public class MenuAction extends AbstractAction...{
private String objname = "";
public MenuAction(String name,String objname)...{
super(name);
this.objname = objname;
}
public void actionPerformed(ActionEvent arg0) ...{
if(objname.equals("Exit"))...{
DTDAction.safeExit();
}
}
}
DTDMenuBar.java
package menu;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.Action;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import comm.DTDInfo;
public class DTDMenuBar extends JMenuBar...{
public DTDMenuBar()...{
JMenu fileMenu = new JMenu(DTDInfo.getDTDMenuBar_File());
fileMenu.setMnemonic('F');
//添加事件
Action exitAction = new MenuAction(DTDInfo.getDTDMenuBar_Exit(),"Exit");
JMenuItem exitItem = fileMenu.add(exitAction);
exitItem.setMnemonic('x');
exitItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_X,InputEvent.CTRL_MASK));
fileMenu.add(exitItem);
this.add(fileMenu);
}
}
运行我们的程序,我们得到了一个带下拉条的file菜单,里面有一个退出程序的菜单选项。
而且我们可以很容易的修改 DTDMenuBar MenuAction 来很容易的添加新的菜单事件触发和实现。
呵呵,打个包,给个源代码。
http://www.018008.com/v/D2D1.0_2.rar
相关文章推荐
- D2D网络数据存储器开发全过程(5)
- D2D网络数据存储器开发全过程(6)
- D2D网络数据存储器开发全过程(1)
- D2D网络数据存储器开发全过程(4)
- D2D网络数据存储器开发全过程(2)
- 移动开发过程中使用的网络请求抓包工具
- ios开发之网络数据的下载与上传 要实现网络数据的下载与上传,主要有三种方式
- android studio插件快速开发之gson解析网络数据
- 【神经网络与深度学习】【CUDA开发】【VS开发】Microsoft官方移植了Caffe配置过程说明
- iOS开发笔记--iOS网络七层模型&&网络数据包
- Windows 2000开发过程中一些有趣的数据
- Android开发手记(20) 数据存储五 网络存储
- 网络中数据传输过程的分析
- Linux 网络协议栈开发番外篇(三)—— ping命令执行过程详解
- iOS开发 - 网络数据安全加密(MD5)
- 嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)
- NDIS网络数据监控程序NDISMonitor(1)-----驱动程序(编译过程与源码讲解)
- Spring构建Web应用部署至Tomcat开发过程中的数据编码问题
- iOS开发 - 第04篇 - 网络 - 03 - 数据安全 & 文件下载
- iPhone开发下载网络数据的几种方法总结