快速业务通道

java swing菜单例子 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

java swing菜单例子

时间:2007-05-29 yycnet.yeah.net yyc译 菜单在Swing中做了重要的改进并且更加的灵活——例如,我们可以在几乎程序中任何地方使用他们,包括在面板和程序片中。语法同它们在老的AWT中是一样的,并且这样使出现在老AWT的在新的Swing也出现了:我们必须为我们的菜单艰难地编写代码,并且有一些不再作为资源支持菜单(其它事件中的一些将使它们更易转换成其它的编程语言)。另外,菜单代码相当的冗长,有时还有一些混乱。下面的方法是放置所有的关于每个菜单的信息到对象的二维数组里(这种方法可以放置我们想处理的任何事物到数组里),这种方法在解决这个问题方面领先了一步。这个二维数组被菜单所创建,因此它首先表示出菜单名,并在剩余的列中表示菜单项和它们的特性。我们会注意到数组列不必保持一致——只要我们的代码知道将发生的一切事件,每一列都可以完全不同。
//: Menus.java
// A menu-building system; also demonstrates
// icons in labels and menu items.
package c13.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Menus extends JPanel {
  static final Boolean
    bT = new Boolean(true), 
    bF = new Boolean(false);
  // Dummy class to create type identifiers:
  static class MType { MType(int i) {} };
  static final MType
    mi = new MType(1), // Normal menu item
    cb = new MType(2), // Checkbox menu item
    rb = new MType(3); // Radio button menu item
  JTextField t = new JTextField(10);
  JLabel l = new JLabel("Icon Selected", 
    Faces.faces[0], JLabel.CENTER);
  ActionListener a1 = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
      t.setText(
        ((JMenuItem)e.getSource()).getText());
    }
  };
  ActionListener a2 = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
      JMenuItem mi = (JMenuItem)e.getSource();
      l.setText(mi.getText());
      l.setIcon(mi.getIcon());
    }
  };
  // Store menu data as "resources":
  public Object[][] fileMenu = {
    // Menu name and accelerator:
    { "File", new Character(''F'') },
    // Name type accel listener enabled
    { "New", mi, new Character(''N''), a1, bT },
    { "Open", mi, new Character(''O''), a1, bT },
    { "Save", mi, new Character(''S''), a1, bF },
    { "Save As", mi, new Character(''A''), a1, bF},
    { null }, // Separator
    { "Exit", mi, new Character(''x''), a1, bT },
  };
  public Object[][] editMenu = {
    // Menu name:
    { "Edit", new Character(''E'') },
    // Name type accel listener enabled
    { "Cut", mi, new Character(''t''), a1, bT },
    { "Copy", mi, new Character(''C''), a1, bT },
    { "Paste", mi, new Character(''P''), a1, bT },
    { null }, // Separator
    { "Select All", mi,new Character(''l''),a1,bT},
  };
  public Object[][] helpMenu = {
    // Menu name:
    { "Help", new Character(''H'') },
    // Name type accel listener enabled
    { "Index", mi, new Character(''I''), a1, bT },
    { "Using help", mi,n

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号