第9章 Swing菜单
Swing菜单是我们经常用到的一种控件,NetBeans对菜单进行了很好的封装,是我们应用起来非常方便。下面,我们就来简单的了解一下Swing菜单。
菜单:Jmenu
菜单项:JmenuItem
复选菜单项:JcheckBocMenuItem
单选菜单项:JradioButtonMenuItem
弹出式菜单:JpopupMenu
下面来看一个简单的菜单程序:
代码:
import java.awt.*;
import javax.swing.*;
public class DemoSimpleMenu extends JFrame{
JMenuBar jMenuBarOne;
JMenu fileMenu,editMenu,newFileMenu;
JMenuItem openFile,closeFile;
JCheckBoxMenuItem newFileTxt,newFileJava;
JRadioButtonMenuItem copyFile,pasteFile;
ButtonGroup buttonEdit;
/** Creates a new instance of DemoSimpleMenu */
public DemoSimpleMenu() {
jMenuBarOne=new JMenuBar();
buttonEdit=new ButtonGroup();
fileMenu=new JMenu("文件");
editMenu=new JMenu("编辑");
newFileMenu=new JMenu("新建文件");
openFile=new JMenuItem("打开文件");
closeFile=new JMenuItem("关闭文件");
newFileTxt=new JCheckBoxMenuItem("文本文件");
newFileJava=new JCheckBoxMenuItem("Java文件");
copyFile=new JRadioButtonMenuItem("复制");
pasteFile=new JRadioButtonMenuItem("粘贴");
buttonEdit.add(copyFile);
buttonEdit.add(pasteFile);
this.setJMenuBar(jMenuBarOne);
jMenuBarOne.add(fileMenu);
jMenuBarOne.add(editMenu);
fileMenu.add(openFile);
fileMenu.add(closeFile);
fileMenu.addSeparator();
fileMenu.add(newFileMenu);
newFileMenu.add(newFileTxt);
newFileMenu.add(newFileJava);
editMenu.add(copyFile);
editMenu.add(pasteFile);
this.setTitle("菜单的简单使用");
this.setBounds(100,100,250,150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new DemoSimpleMenu();
}
}
好的,现在大家已经能够明白菜单的层次结构了,那么,我们下面再看一个例子。关于菜单的各种方法,在此不作多说,在相关的帮助文档上,都可以很清楚的查到。
在NetBeans中使用菜单控件
在添加菜单栏,然后添加菜单,然后在导航窗口右击菜单,添加,选择要添加的菜单项,或者子菜单。
然后在相应的菜单项上右击,可以选择事件,添加如下代码:
JFileChooser fileChooser=new JFileChooser();
fileChooser.showOpenDialog(this);//打开文件菜单项
JFileChooser fileChooser=new JFileChooser();
fileChooser.showSaveDialog(this);//保存文件菜单项
这样,我们就基本上掌握了菜单控件的开发方法,下面,我们要来讲解一个关于弹出式菜单的例子:
代码:
public class DemoJPopupMenu extends JFrame{
JMenu fileMenu;
JPopupMenu jPopupMenuOne;
JMenuItem openFile,closeFile,exit;
JRadioButtonMenuItem copyFile,pasteFile;
ButtonGroup buttonGroupOne;
/** Creates a new instance of DemoJPopupMenu */
public DemoJPopupMenu() {
jPopupMenuOne=new JPopupMenu();
buttonGroupOne=new ButtonGroup();
fileMenu=new JMenu("文件");
openFile=new JMenuItem("打开");
closeFile=new JMenuItem("关闭");
fileMenu.add(openFile);
fileMenu.add(closeFile);
jPopupMenuOne.add(fileMenu);
jPopupMenuOne.addSeparator();
copyFile=new JRadioButtonMenuItem("复制");
pasteFile=new JRadioButtonMenuItem("粘贴");
buttonGroupOne.add(copyFile);
buttonGroupOne.add(pasteFile);
jPopupMenuOne.add(copyFile);
jPopupMenuOne.add(pasteFile);
jPopupMenuOne.addSeparator();
exit=new JMenuItem("退出");
jPopupMenuOne.add(exit);
MouseListener popupListener=new PopupListener(jPopupMenuOne);
this.addMouseListener(popupListener);
this.setTitle("弹出式菜单的简单使用");
this.setBounds(100,100,250,150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new DemoJPopupMenu();
}
class PopupListener extends MouseAdapter{
JPopupMenu popupMenu;
PopupListener(JPopupMenu popupMenu){
this.popupMenu=popupMenu;
}
public void mousePressed(MouseEvent e){
showPopupMenu(e);
}
public void mouseReleased(MouseEvent e){
showPopupMenu(e);
}
private void showPopupMenu(MouseEvent e){
if(e.isPopupTrigger()){
popupMenu.show(e.getComponent(),e.getX(),e.getY());
}
}
}
}