欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

程序员文章站 2024-02-29 12:10:04
菜单是gui中最常用的组件,菜单不是component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件由菜单栏 (menubar)、菜...

菜单是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(); 
  } 
}

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

Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

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

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(); 
    } 
}

有图有真相(不过挺丑)

Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

三:选项卡窗体:

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); 
    } 

运行截图: 

Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例