菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中.

菜单组件由菜单栏 (MenuBar)、菜单(Menu)和菜单项(MenuItem)三部分组成。 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成。一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可。

常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方).

一:下拉式菜单的创建步骤:

1.创建一个菜单栏。 
2.调用 Frame 的 setMenuBar()方法将菜单栏加入 Frame 中。 
3.分别创建若干个 Menu 对象,并加入 MenuBar 中。 
4.对于每个 Menu 对象,分别创建若干个 MenuItem 对象,并加入 Menu 中。

实例:

复制代码代码如下:
import java.awt.*;  
  
public class MenuDemo {  
  
    Frame f;  
    MenuBar mb;  
    Menu menuFile;  
    MenuItem mItemNew, mItemOpen, mItemSave;  
  
    MenuDemo() {  
        f = new Frame("我的菜单实例");  
        f.setBounds(300, 100, 400, 300);  
  
        mb = new MenuBar(); // 创建菜单栏MenuBar  
        menuFile = new Menu("文件");   
  
        mItemNew = new MenuItem("新建");  
        mItemOpen = new MenuItem("打开");  
          
        menuFile.add(mItemNew);  
        mItemSave = new MenuItem("保存");  
          
        menuFile.add(mItemOpen);  
        // 加入分割线  
        menuFile.addSeparator();  
                menuFile.add(mItemSave);  
                mb.add(menuFile);   
                // 菜单栏中加入“文件”菜单  
   
// setMenuBar:将此窗体的菜单栏设置为指定的菜单栏。  
                f.setMenuBar(mb);   
                f.setVisible(true);  
          }  
    public static void main(String[] args) {  
        new MenuDemo();  
  }  
}

有图有真相:(下拉的菜单项无法截图)

二:弹出式菜单的创建步骤:

1.先建立最基本的JFrame框架.

2.创建右键弹出式菜单(JPopupMenu)和添加的菜单项(JMenuItem). 3.使用add方法和insert方法向JPopupMenu中添加或者插入. 4.通过调用弹出式菜单触发器对应的show方法来显示弹出式菜单,检查所有的MouseEvent事件,看其是否是弹出式菜单触发器,然后在合适的时候显示弹出式菜单

实例:

复制代码代码如下:
import java.awt.event.*;  
import javax.swing.*;  
  
public class JPopMenu_Demo extends JFrame {  
  
    // 弹出菜单的实现,弹出菜单是一个可弹出并显示一系列选项的小窗口  
    JPopupMenu popupMenu;   
  
    public JPopMenu_Demo() {  
        super("右键弹出式菜单"); // 调用父类构造函数  
        // 实例化弹出菜单   
        popupMenu = new JPopupMenu();   
        // 增加菜单项到菜单上  
        popupMenu.add(new JMenuItem("菜单项"));  
        popupMenu.add(new JButton("按钮"));   
        popupMenu.add(new JLabel("标签"));  
  
        myEvents();  
  
        setSize(350, 300); // 设置窗口大小  
        setLocation(400, 200);  
        setVisible(true); // 设置窗口为可视  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序  
    }  
  
    private void myEvents() {  
        // 窗口的鼠标事件处理  
        addMouseListener(new MouseAdapter() {   
            // 点击鼠标  
            public void mousePressed(MouseEvent event) {   
                // 调用triggerEvent方法处理事件  
                triggerEvent(event);   
            }  
            // 释放鼠标  
            public void mouseReleased(MouseEvent event) {   
                triggerEvent(event);  
            }  
  
            private void triggerEvent(MouseEvent event) { // 处理事件  
                // isPopupTrigger():返回此鼠标事件是否为该平台的弹出菜单触发事件。  
                if (event.isPopupTrigger())   
                    // 显示菜单  
                    popupMenu.show(event.getComponent(), event.getX(),  
                            event.getY());   
            }  
        });  
    }  
  
    public static void main(String args[]) {  
        new JPopMenu_Demo();  
    }  
}

有图有真相(不过挺丑)

三:选项卡窗体:

1.基本说明:

2.常用方法:

我们把多个JPanel的对象添加到 JTabbedPanel中去 。然后再
JTabbedPanel 添加到窗体,代码如下:

复制代码代码如下:
JTabbedPane jp=new JTabbedPane(JTabbedPane.LEFT) ; //设置选项卡在坐标
JPanel p1=new JPanel() ;
JPanel p2=new JPanel() ;
JPanel p3=new JPanel() ;
JPanel p4=new JPanel() ; //创建多个容器
jp.add("窗体1", p1) ;
jp.add("窗体2", p2) ;
jp.add("窗体3", p3) ;//添加子容器,并且为选项卡添加名字
this.add(jp,BorderLayout.CENTER); //将选项卡窗体添加到主窗体上去

3.代码示例和截图:

复制代码代码如下:
import java.awt.*;  
import javax.swing.*;  
  
/** 
 * <p>Title: 选项卡演示</p> 
 * <p>Description: 这里是一个选项卡演示,点击不同的卡片,显示的内容不同</p> 
 */  
  
public class JTabbedPaneDemo1 extends JPanel {  
      
    public JTabbedPaneDemo1() {  
        super(new GridLayout(1, 1));  
  
        ImageIcon icon = createImageIcon("images/MyIcon.gif");  
        JTabbedPane tabbedPane = new JTabbedPane();  
  
        Component panel1 = makeTextPanel("#第一个卡片#");  
        tabbedPane.addTab("One", icon, panel1, "第一个卡片提示信息!");  
        tabbedPane.setSelectedIndex(0);  
  
        Component panel2 = makeTextPanel("##第二个卡片##");  
        tabbedPane.addTab("Two", icon, panel2, "第二个卡片提示信息!");  
  
        Component panel3 = makeTextPanel("###第三个卡片###");  
        tabbedPane.addTab("Three", icon, panel3, "第三个卡片提示信息!");  
  
        Component panel4 = makeTextPanel("####第四个卡片####");  
        tabbedPane.addTab("Four", icon, panel4, "第四个卡片提示信息!");  
  
        // 将选项卡添加到panl中  
        add(tabbedPane);  
    }  
  
    /** 
     * <br> 
     * 方法说明:添加信息到选项卡中 <br> 
     * 输入参数:String text 显示的信息内容 <br> 
     * 返回类型:Component 成员对象 
     */  
    protected Component makeTextPanel(String text) {  
        JPanel panel = new JPanel(false);  
        JLabel filler = new JLabel(text);  
        filler.setHorizontalAlignment(JLabel.CENTER);  
        panel.setLayout(new GridLayout(1, 1));  
        panel.add(filler);  
        return panel;  
    }  
  
    /** 
     * <br> 
     * 方法说明:获得图片 <br> 
     * 输入参数:String path 图片的路径 <br> 
     * 返回类型:ImageIcon 图片对象 
     */  
    protected static ImageIcon createImageIcon(String path) {  
        // java.net.URL imgURL = TabbedPaneDemo.class.getResource(path);  
        if (path != null) {  
            return new ImageIcon(path);  
        } else {  
            System.out.println("Couldn't find file: " + path);  
            return null;  
        }  
    }  
  
    public static void main(String[] args) {  
        // 使用Swing窗体描述  
        // JFrame.setDefaultLookAndFeelDecorated(true);  
  
        try {  
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());  
        } catch (Exception e) {  
              
        }  
        // 创建窗体  
        JFrame frame = new JFrame("TabbedPaneDemo");  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        frame.getContentPane().add(new JTabbedPaneDemo1(), BorderLayout.CENTER);  
  
        // 显示窗体  
        frame.setSize(400, 200);  
        frame.setVisible(true);  
    }  
}  

运行截图:

menu JPopupMenu JTabbedPane的更多相关文章

  1. Android Studio —— 创建Menu菜单项

    大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:

  2. [转]NopCommerce How to add a menu item into the administration area from a plugin

    本文转自:http://docs.nopcommerce.com/display/nc/How+to+code+my+own+shipping+rate+computation+method Go t ...

  3. Vertical Menu ver4

    以前一直使div来创建Vertical菜单,也曾有过3个版本.http://www.cnblogs.com/insus/archive/2011/10/19/2217314.html 现今Insus. ...

  4. 菜单(Menu)的三中创建方式——Android开发之路2

    菜单的三种创建方式 一.OptionsMenu---选项菜单 Android应用中的菜单默认是隐藏的,只有当用户点击手机上的MENU键,系统才会显示菜单.这种菜单叫做选项菜单(Options Menu ...

  5. jQuery ui autocomplete 与easyUI冲突解决办法(重命名ui的autocomplete 和menu部分)

    http://jqueryui.com/download/   UI定制只选autocomplete 会自动把依赖的menu模块也加入进来--然而easyUI也有自己的menu,于是就-- 折腾了好久 ...

  6. 使用GRUB 添加新的启动项 (menu entry)

    GRUB版本: Grub2 基础知识: 相关的文件和目录结构: A./etc/grub.d/ 上图中有一个40_custom的脚本: 可以通过修改40_custom脚本来加入自定义的启动项. B./e ...

  7. Menu与ActionBar的爱恨情仇

    最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...

  8. WPF menu

    MenuMenu的样式很简单,就是顶部的那个框,如下图 而其中的文字“文件”“图形”...是属于MenuItem的,要灵活使用MenuItem,就需要了解MenuItem.Role的作用 TopLev ...

  9. WPF+通过配置文件生成菜单(Menu)+源码

    这个月做项目,遇到过一个通过配置文件来生成菜单的解决方案,感觉挺优雅的,特地放到博客园来,以飨读者. 说来惭愧,以前做的项目都没有这样用过,都是固定死了.如果后续有需要加入菜单,还得在重新修改UI,然 ...

随机推荐

  1. 解决织梦 \include\userlogin.class.php on line 21(或16) 报错的方法

    用了下DEDECMS v5.7 SP1版本,发现很多问题,其中一个比较严重的是,架到服务器上的dede网站后台打开菜单选项卡得不能动,等半天显示505服务器错误,这个真让人纠结,在本地调试明明好好的, ...

  2. 【实用】Html5实现文件异步上传

    1 简介 开发文件上传功能从来不是一件愉快的事,异步上传更是如此,使用过iframe和Flash的上传方案,也都感觉十分的别扭.本文简要简绍利用Html5的FormData实现文件的异步上传,还可以实 ...

  3. jsp实现账户登录、注册!

    jsp连接mysql数据库进行账户登录验证和账户注册 ~jsp: Login.jsp .LoginCl.jsp.Welcome.jsp.Register.jsp.login.css login.css ...

  4. this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符

    1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     ...

  5. Objective-C Composite Objects

    We can create subclass within a class cluster that defines a class that embeds within it an object. ...

  6. uvm_reg_item——寄存器模型(五)

    uvm_reg_item 扩展自uvm_sequence_item,也就说寄存器模型定义了transaction item. adapter 的作用是把这uvm_reg_item转换成uvm_sequ ...

  7. 设置office首字母不变大小的手段

    选项->校对—〉自动更正选项->“自动更正”页,句首字母大写,取消就行了

  8. [windows]win7设置wifi热点

    1.启用并设定虚拟WiFi网卡:netsh wlan set hostednetwork mode=allow ssid=whylaughing key=124025621 2.开启无线wifi网络: ...

  9. CSS-学习笔记五

    1.  权重: 内联:A ID:B Class:C 标签:D 继承:0 2.  文字阴影text-shadow 3.  文字缩进text-index 4.  文本换行 5.  文本溢出 6.  圆角 ...

  10. hihoCoder #1080 : 更为复杂的买卖房屋姿势 (线段树,多tag)

    题意: 有编号为0~n的n+1个房屋,给出每个房屋的起始价格,随后给出m种修改,每次修改都要进行输出所有房屋的价格总和.修改有两种方式:(1)政府调控,编号L~R全置为同一价格(0)房屋自行涨跌,编号 ...