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

网友投稿 577 2023-08-07


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

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

 &nbsxIZZyp;      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 { 

 

&xIZZynbsp;   // 弹出菜单的实现,弹出菜单是一个可弹出并显示一系列选项的小窗口 

    JPopupMenu popupMenu;  

 

    public JPopMenu_Demo() { 

        super("右键弹出式菜单"); // 调用父类构造函数 

        // 实例化弹出菜单  

        popupMenu = new JPopupMenu();  

        // 增加菜单项到菜单上 

        popupMenu.add(new JMenuItexIZZym("菜单项")); 

        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.*; 

 

/**

 *

Title: 选项卡演示

 *

Description: 这里是一个选项卡演示,点击不同的卡片,显示的内容不同

 */ 

 

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

    } 

 

    /**

     *

     * 方法说明:添加信息到选项卡中

     * 输入参数:String text 显示的信息内容

     * 返回类型: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; 

    } 

 

    /**

     *

     * 方法说明:获得图片

     * 输入参数:String path 图片的路径

     * 返回类型: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); 

    } 

}

运行截图:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:form.submit()不能提交表单的错误原因及解决方法
下一篇:Java中的2种集合排序方法介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~