一个java菜单程序(AWT)

本文介绍了一个使用AWT实现的菜单程序,包含多种菜单类型及快捷键功能。通过实例代码展示了如何创建菜单项、设置快捷键及响应菜单操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个程序的框架是网上找来的,自己改了些东西。实现了三种不同类型的菜单,并且实现了菜单的快捷键。但是个人感觉不太好,并且无法进行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(
600400);
        menu.show();
    }
}  
//  @jve:decl-index=0:visual-constraint="20,17" 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值