您的位置:首页 > 理论基础 > 计算机网络

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: