一个java菜单程序(AWT)

这个程序的框架是网上找来的,自己改了些东西。实现了三种不同类型的菜单,并且实现了菜单的快捷键。但是个人感觉不太好,并且无法进行VIsual的操作。打算今天再作一个用SWT的,代码明天晚上之前放上来。

 

/**         
 * 
@author    bestseal
 * @date     2007.10.10
 * 
@version   1.0.0
 * a menu programme using awt
 * 
*/
import  java.awt. * ;
import  java.awt.event.KeyEvent;


public   class  MenuTest  extends  Frame {
     
/* name all the items for the Edit menu */
    String[] ArrayEdit
=  {  " Copy " " Paste " " Delete " , " Find " }; 
    
/*  name the textfiled */
    TextField text 
=   new  TextField( " This is a Menu programme. " , 80 );   //   @jve:decl-index=0:visual-constraint="18,126"
    MenuBar menuBar  =   new  MenuBar();  
    Menu menuFile 
=   new  Menu( " File " );  
    Menu menuEdit 
=   new  Menu( " Edit " ); 
    Menu menuSave
=   new  Menu( " Save " );  
    
    
/*  add check box: */
    CheckboxMenuItem[] checkboxSave 
=  {  new  CheckboxMenuItem( " Save " ),
                                        
new  CheckboxMenuItem( " Save as " ) };
    
/* add keyboard shortcuts */
    MenuShortcut oShortcut
=   new  MenuShortcut(KeyEvent.VK_O,  true );  /* if true, add shift */    //   @jve:decl-index=0:
    MenuShortcut eShortcut  =   new  MenuShortcut(KeyEvent.VK_E,  false ); /* false with out shift */    //   @jve:decl-index=0:
    MenuItem[] ArrayFile  =  {  new  MenuItem( " Open " ,oShortcut ) ,
                        
new  MenuItem( " Exit " ,eShortcut)  };
    
/* function: constructor function */
    
public  MenuTest() 
    {
        
/*  add menu to EditMenu */
        
for  ( int  i  =   0 ; i  <  ArrayEdit.length; i ++
        {
            menuEdit.add(
new  MenuItem(ArrayEdit[i]));
            
/* every two item add a list separator  */
            
if  ((i + 1 ) %   2   ==   0 )
            {
                menuEdit.addSeparator();
            }
        }
        
/* add menu to checkbox Save */
        
for  ( int  i  =   0 ; i  <  checkboxSave.length; i ++ )
        {
            menuSave.add(checkboxSave[i]);
        }
        menuFile.add(menuSave);
        
        
/* add menu to FileMenu */
        
for  ( int  i  =   0 ; i  <  ArrayFile.length; i ++ )
        {
            menuFile.add(ArrayFile[i]);
        }
        
/*  compose the frame and the menu */
        menuBar.add(menuFile);
        menuBar.add(menuEdit);
        add(
" Center " ,text);
        setMenuBar(menuBar);
        
/* textfiled read only */
        text.setEditable(
false );
    }
   
/* fucnction :close windows to exit */
    
public   boolean  handleEvent(Event evt) 
    {
        
if  (evt.id  ==  Event.WINDOW_DESTROY)
            System.exit(
0 );
        
else
            
return   super .handleEvent(evt);
        
return   true ;
    }
    
/* function:  action the menu */
    
public   boolean  action(Event evt, Object arg) {
        
/* test if target is a instance of Menuitem */
         
if  (evt.target  instanceof  MenuItem)
         {
            
if  (arg.equals( " Open " ))
            {
                String str 
=  text.getText();
                
boolean  chosen  =   false ;
                
for  ( int  i  =   0 ; i  <  ArrayEdit.length; i ++ )
                    
if  (str.equals(ArrayEdit[i]))
                        chosen 
=   true ;
                
if  ( ! chosen)
                    text.setText(
" Choose a Menu! " );
                
else
                    text.setText(
" Opening  "   +  str );
            }     
                
else   if  (evt.target.equals(ArrayFile[ 1 ]))
                System.exit(
0 );  /* exit programme */
             
/* CheckboxMenuItems cannot use String
             * matching; you must match the target:
             * 
*/
                 
else   if  (evt.target.equals(checkboxSave[ 0 ]))
                text.setText(
" saving.... " +  checkboxSave[ 0 ].getState());
                 
else   if  (evt.target.equals(checkboxSave[ 1 ]))
                text.setText(
" save as... " +  checkboxSave[ 1 ].getState());
            
else
                text.setText(arg.toString());
        } 
else
            
return   super .action(evt, arg);
        
return   true ;
    }

    
public   static   void  main(String[] args) {
        MenuTest menu 
=   new  MenuTest();
        menu.resize(
600 400 );
        menu.show();
    }
}  
//   @jve:decl-index=0:visual-constraint="20,17" 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值