D2D网络数据存储器开发全过程(3)

来源:互联网 发布:刷微博软件 编辑:程序博客网 时间:2024/05/22 14:38

第三章:

继续上面的,我们开始修饰我们的主窗口。

系统退出的时候,我们可能需要添加些退出处理工作,这里我们可以修改下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

原创粉丝点击