JavaSwing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例
菜单是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);
}
}
相关文章