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

运行截图:

(0)

相关推荐

  • Java Swing中的表格(JTable)和树(JTree)组件使用实例

    一:表格(JTable): 1.基本概念: 表格(JTable)是Swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制. 2.常用构造方法: * JTable():使用系统默认的模型创建一个JTable 实例.  * JTable(int numRows,int numColumns):创建一个使用DefaultTableModel 指定行.列的空表格.  * JTable(Object[ ][ ] rowData,Object[ ][ ] columnNa

  • 详解Java的MyBatis框架中的事务处理

    一.MyBatis单独使用时,使用SqlSession来处理事务: public class MyBatisTxTest { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; @BeforeClass public static void setUpBeforeClass() throws Exception { try { reader = Resources.getResourc

  • java Swing实现选项卡功能(JTabbedPane)实例代码

     Swing实现选项卡功能(JTabbedPane) 先创建JTabbedPane对象,构造函数可使用JTabbedPane(int tabPlacement).tabPlacement是JTabbedPane从接口 javax.swing.SwingConstants 继承的字段.可以是BUTTOM,TOP等.如下代码所示: JFrame jframe = new JFrame("TEST"); <a href="http://lib.csdn.net/base/do

  • 全面解析JTA 深度历险

    什么是事务处理 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ( Isolation ) 和持久性 ( Durabilily ).关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下 : 1. 将 A 账户中的金额减少 500 2. 将 B 账户中的金额增加 500 这两个操作必须保正 ACID 的事务属性:即要么全部成功,要么全部失败:假

  • Java中JDBC事务与JTA分布式事务总结与区别

    Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现.所以本文暂不讨论容器事务.本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务. JDBC事务 JDBC的一切行为包括事务是基于一个Connection的,在JDBC中是通过Connection对象进行事务管理.在JDBC中,

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

    菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件由菜单栏 (MenuBar).菜单(Menu)和菜单项(MenuItem)三部分组成. 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成.一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可. 常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方). 一:下拉式菜单的创建步骤: 1.创建一个菜单栏.

  • iOS实现顶部标签式导航栏及下拉分类菜单

    本文实例为大家分享了iOS实现顶部标签式导航栏及下拉分类菜单的全部过程,供大家参考,具体内容如下 当内容及分类较多时,往往采用顶部标签式导航栏,例如网易新闻客户端的顶部分类导航,最近刚好有这样的应用场景,参考网络上一些demo,实现了这种导航效果,记录一些要点. 效果图(由于视频转GIF掉帧,滑动和下拉动画显得比较生硬,刚发现quickTime可以直接录制手机视频,推荐一下,很方便) 1.顶部标签式导航栏 (1)实现思路 其实就是在上下两个UIScrollView上做文章,实现联动选择切换的效果

  • yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析

    本文实例讲述了yii2框架中使用下拉菜单的自动搜索yii-widget-select2的方法.分享给大家供大家参考,具体如下: github中源代码地址:https://github.com/kartik-v/yii2-widget-select2 利用composer.phar安装此插件: php composer.phar require kartik-v/yii2-widget-select2 "*" 引用方法: use kartik\select2\Select2; 源代码:

  • BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)

    今天收到程序组提交的一个兼容BUG,在火狐中使用模态框加载日期控件时选择时间下拉菜单没有效果(不能点击),而在谷歌中却是好的, 排错思路: 1,在当前页面主层放置一个时间控件,测试通过 2,在ajax加载页放置一个时间控件,测试通过 3,在模态框最外层放置一个时间控件,不通过 主要原因是模态框与时间下拉菜单层级关系造成(z-index),因时间控件是收bootstrap的时间控件.js文件生成,所以导致在页面与css样式表中修改无效,网上有直接修改bootstrap的时间控件.js文件,然而bo

  • bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法

    bootstrap-table下表格中增加操作的btn,如果是下拉菜单,那么在每一页最后一行点击下拉菜单,会出现滚动条,解决方法: 修改这个类,但是这个类改了会有点影响toolbar的显示,不过问题不大,加个margin就可以了 .fixed-table-body{ overflow:visible !important; } 以上所述是小编给大家介绍的bootstrap table 表格中增加下拉菜单末行出现滚动条解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的

  • 自定义Django Form中choicefield下拉菜单选取数据库内容实例

    工作中遇到的问题,自定义了一个forms.form表单,某项需要作出下拉菜单,下拉菜单中的选项需要从数据库(objectForm models)中提取. form.py为: class objectForm(forms.Form): pre = choicefield(lable = "工作") 最后的解决办法: 1.定义一个函数 def get_object(request): r = [('', '----')] for obj in objectModels.objects.al

  • Java Swing中JTable渲染器与编辑器用法示例

    本文实例讲述了Java Swing中JTable渲染器与编辑器用法.分享给大家供大家参考,具体如下: JTable的内容.外观.事件响应在很大程度上是由渲染器与编辑器控制的.具体说来,渲染器负责单元格的外观比如前景色.背景色,以及单元格提示:编辑器负责单元格的内容和事件响应.编辑器默认为文本框形式,也可以使用下拉菜单.按钮.单选按钮等形式.下面通过一个demo程序来说明渲染器与编辑器的基本用法. JButtonTableExample.java package awtDemo; import j

  • javascript实现省市区三级联动下拉框菜单

    本文实例讲述了javascript实现省市区三级联动下拉框菜单代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title> <!-- 使用QQ的省市区数据 --> <!-- <script type="text/javascript" src="http:/

  • js实现select下拉框菜单

    本文实例讲述了js实现select下拉框菜单的详细代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> #gridComboBox { background: #fff; border: 1px solid #2d78f4; border-radius:

  • 基于javascript实现全国省市二级联动下拉选择菜单

    本文实例讲述了js实现全国省市二级联动下拉选择菜单,分享给大家供大家参考.具体如下: 效果图: 具体代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script type="text/javascript"&g

随机推荐