加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

JAVA中菜单栏和对话框的添加方法

(2011-12-02 15:52:51)
标签:

菜单

对话框

java

it

分类: JAVA

    一般窗口类都需要创建菜单条(MenuBar),菜单(Menu)和菜单项(MenuItem),通常,一个菜单条含有几个菜单,一个菜单又含有几个菜单项。菜单项在菜单中表示一个选项,并且可以注册一个动作监听器(ActionListener),以产生动作事件。

一个完整的菜单条程序

import java.awt.*;
import java.awt.event.*;

import org.omg.CORBA.PUBLIC_MEMBER;

public class MenuTest extends Frame implements ActionListener
{
 //定义几个菜单项
 private MenuItem fileNewItem = new MenuItem("New");
 private MenuItem fileopenItem = new MenuItem("OPEN");
 private MenuItem fileExitItem= new MenuItem("EXIT");
 private MenuItem editCopyItem = new MenuItem("COPY");
 private MenuItem editCutItem = new MenuItem("CUT");
 private MenuItem editPasteItem = new MenuItem("PASTE");
 
 //在构造函数中完成主框架的布局工作
 public MenuTest()
 {
  //调用父类的构造函数,是框架的标题为Menu Test Program
   super("Menu Test Program");
   //定义一个菜单,并将几个菜单项添加到菜单里面
   Menu fileMenu = new Menu("FILE");
   fileMenu.add(fileNewItem);
   fileMenu.add(fileopenItem);
   fileMenu.add(fileExitItem);
   Menu editMenu = new Menu("EDIT");
   editMenu.add(editCopyItem);
   editMenu.add(editCutItem);
   editMenu.add(editPasteItem);
   MenuBar fileMenuBar =new MenuBar();
   fileMenuBar.add(editMenu);
   fileMenuBar.add(fileMenu);
   //在程序中添加菜单条
   setMenuBar(fileMenuBar);
   //为Exit菜单项注册监听事件
   fileExitItem.addActionListener(this);
   setSize(200, 200);
   //如不添加这个函数对话框不会显示出来。deprecated:不赞成的
   show();  
 }

//若点击exit按钮,则弹出对话框
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if(e.getSource()==fileExitItem)
  {
   ConfirmDialog exit = new ConfirmDialog(this, "Confirm exit", "Do you really want to exit?");
   if(exit.isOkay)
   {System.exit(0);} 
  }
 }
 //每个JAVA应用程序中都应该包含main函数
 public static void main(String args[])
 {
  //实例化MenuTest类
  MenuTest f = new MenuTest();
 }
}

 

对话框的初始化设置程序

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Area;

public class ConfirmDialog extends Dialog implements ActionListener

 private Button okayButton = new Button("确定");
 private Button cancelButton = new Button("取消");
 private Label label = new Label("are you sure?", Label.CENTER);
 public boolean isOkay = false;
 //定义一个内部类,若按关闭窗口键,对话框隐藏。
 public class WindowCloser extends WindowAdapter
 {
  @Override
  public void windowClosing(WindowEvent e) {
   // TODO Auto-generated method stub
   super.windowClosing(e);
   ConfirmDialog.this.isOkay=false;
   ConfirmDialog.this.hide();
  }
 }
 
 public ConfirmDialog(Frame owner) {
  // TODO Auto-generated constructor stub
  //调用本类含三个参数的构造函数
  this(owner, "please confirm","Are you sure?");
 }

 public ConfirmDialog(Frame parent, String title, String question)
 {
  super(parent, title, true);
  label.setText(question);
  setup();
  okayButton.addActionListener(this);
  cancelButton.addActionListener(this);
  addWindowListener(new WindowCloser());
  setResizable(false);
  pack();show();
 }
 
 private void setup()
 {

  //panel是一个简单的容器类,可以在Panle上面添加各种各样的组件
  Panel buttons = new Panel();
  buttons.setLayout(new FlowLayout());
  buttons.add(okayButton);
  buttons.add(cancelButton);
  setLayout(new BorderLayout());
  add("Center", label);
  add("South", buttons); 
 }
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  isOkay=(e.getSource()==okayButton);
  hide();
 
  

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有