zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

案例组件 使用 菜单 窗体 选项卡 Menu JavaSwing
2023-06-13 09:15:28 时间

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

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

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

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

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

实例:

复制代码代码如下:


importjava.awt.*; 
 
publicclassMenuDemo{ 
 
   Framef; 
   MenuBarmb; 
   MenumenuFile; 
   MenuItemmItemNew,mItemOpen,mItemSave; 
 
   MenuDemo(){ 
       f=newFrame("我的菜单实例"); 
       f.setBounds(300,100,400,300); 
 
       mb=newMenuBar();//创建菜单栏MenuBar 
       menuFile=newMenu("文件");  
 
       mItemNew=newMenuItem("新建"); 
       mItemOpen=newMenuItem("打开"); 
         
       menuFile.add(mItemNew); 
       mItemSave=newMenuItem("保存"); 
         
       menuFile.add(mItemOpen); 
       //加入分割线 
       menuFile.addSeparator(); 
               menuFile.add(mItemSave); 
               mb.add(menuFile);  
               //菜单栏中加入“文件”菜单 
  
//setMenuBar:将此窗体的菜单栏设置为指定的菜单栏。 
               f.setMenuBar(mb);  
               f.setVisible(true); 
         } 
   publicstaticvoidmain(String[]args){ 
       newMenuDemo(); 
 } 
}

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

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

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

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

实例:

复制代码代码如下:

importjava.awt.event.*; 
importjavax.swing.*; 
 
publicclassJPopMenu_DemoextendsJFrame{ 
 
   //弹出菜单的实现,弹出菜单是一个可弹出并显示一系列选项的小窗口 
   JPopupMenupopupMenu;  
 
   publicJPopMenu_Demo(){ 
       super("右键弹出式菜单");//调用父类构造函数 
       //实例化弹出菜单  
       popupMenu=newJPopupMenu();  
       //增加菜单项到菜单上 
       popupMenu.add(newJMenuItem("菜单项")); 
       popupMenu.add(newJButton("按钮"));  
       popupMenu.add(newJLabel("标签")); 
 
       myEvents(); 
 
       setSize(350,300);//设置窗口大小 
       setLocation(400,200); 
       setVisible(true);//设置窗口为可视 
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序 
   } 
 
   privatevoidmyEvents(){ 
       //窗口的鼠标事件处理 
       addMouseListener(newMouseAdapter(){  
           //点击鼠标 
           publicvoidmousePressed(MouseEventevent){  
               //调用triggerEvent方法处理事件 
               triggerEvent(event);  
           } 
           //释放鼠标 
           publicvoidmouseReleased(MouseEventevent){  
               triggerEvent(event); 
           } 
 
           privatevoidtriggerEvent(MouseEventevent){//处理事件 
               //isPopupTrigger():返回此鼠标事件是否为该平台的弹出菜单触发事件。 
               if(event.isPopupTrigger())  
                   //显示菜单 
                   popupMenu.show(event.getComponent(),event.getX(), 
                           event.getY());  
           } 
       }); 
   } 
 
   publicstaticvoidmain(Stringargs[]){ 
       newJPopMenu_Demo(); 
   } 
}

有图有真相(不过挺丑)

三:选项卡窗体:

1.基本说明:

2.常用方法:

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

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

3.代码示例和截图:

复制代码代码如下:
importjava.awt.*; 
importjavax.swing.*; 
 
/**
 *<p>Title:选项卡演示</p>
 *<p>Description:这里是一个选项卡演示,点击不同的卡片,显示的内容不同</p>
 */ 
 
publicclassJTabbedPaneDemo1extendsJPanel{ 
     
   publicJTabbedPaneDemo1(){ 
       super(newGridLayout(1,1)); 
 
       ImageIconicon=createImageIcon("images/MyIcon.gif"); 
       JTabbedPanetabbedPane=newJTabbedPane(); 
 
       Componentpanel1=makeTextPanel("#第一个卡片#"); 
       tabbedPane.addTab("One",icon,panel1,"第一个卡片提示信息!"); 
       tabbedPane.setSelectedIndex(0); 
 
       Componentpanel2=makeTextPanel("##第二个卡片##"); 
       tabbedPane.addTab("Two",icon,panel2,"第二个卡片提示信息!"); 
 
       Componentpanel3=makeTextPanel("###第三个卡片###"); 
       tabbedPane.addTab("Three",icon,panel3,"第三个卡片提示信息!"); 
 
       Componentpanel4=makeTextPanel("####第四个卡片####"); 
       tabbedPane.addTab("Four",icon,panel4,"第四个卡片提示信息!"); 
 
       //将选项卡添加到panl中 
       add(tabbedPane); 
   } 
 
   /**
    *<br>
    *方法说明:添加信息到选项卡中<br>
    *输入参数:Stringtext显示的信息内容<br>
    *返回类型:Component成员对象
    */ 
   protectedComponentmakeTextPanel(Stringtext){ 
       JPanelpanel=newJPanel(false); 
       JLabelfiller=newJLabel(text); 
       filler.setHorizontalAlignment(JLabel.CENTER); 
       panel.setLayout(newGridLayout(1,1)); 
       panel.add(filler); 
       returnpanel; 
   } 
 
   /**
    *<br>
    *方法说明:获得图片<br>
    *输入参数:Stringpath图片的路径<br>
    *返回类型:ImageIcon图片对象
    */ 
   protectedstaticImageIconcreateImageIcon(Stringpath){ 
       //java.net.URLimgURL=TabbedPaneDemo.class.getResource(path); 
       if(path!=null){ 
           returnnewImageIcon(path); 
       }else{ 
           System.out.println("Couldn"tfindfile:"+path); 
           returnnull; 
       } 
   } 
 
   publicstaticvoidmain(String[]args){ 
       //使用Swing窗体描述 
       //JFrame.setDefaultLookAndFeelDecorated(true); 
 
       try{ 
           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       }catch(Exceptione){ 
             
       } 
       //创建窗体 
       JFrameframe=newJFrame("TabbedPaneDemo"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.getContentPane().add(newJTabbedPaneDemo1(),BorderLayout.CENTER); 
 
       //显示窗体 
       frame.setSize(400,200); 
       frame.setVisible(true); 
   } 

运行截图: