1、2.4 使用菜单与工具栏,主讲教师:董婷,一、知识能力目标,1掌握菜单的使用和设计; 2掌握工具栏的使用和设计; 3能编写带有菜单和工具栏的GUI程序,二、项目16 菜单控制字体和颜色,使用级联菜单控制字体和文字颜色,菜单 JMenu,复选菜单项 JCheckBoxMenuItem,菜单栏 JMenuBar,菜单项 JMenuItem,1.程序代码,/TestMenu.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestMenu extends JFrame implem
2、ents ActionListenerJMenuBar jmb=new JMenuBar();JMenu fontmenu=new JMenu(“字体“);JMenu helpmenu=new JMenu(“帮助“);JMenu stylemenu=new JMenu(“样式“);JMenu colormenu=new JMenu(“颜色“);JMenuItem exitmenu=new JMenuItem(“退出“);JMenuItem aboutmenu=new JMenuItem(“关于“);JCheckBoxMenuItem boldMenuItem=new JCheckBoxMenu
3、Item(“粗体“);JCheckBoxMenuItem italicMenuItem=new JCheckBoxMenuItem(“斜体“);JMenuItem redmenu=new JMenuItem(“红色“);,JMenuItem bluemenu=new JMenuItem(“蓝色“);JMenuItem greenmenu=new JMenuItem(“绿色“);JTextArea textDemo=new JTextArea(“示例文字“);int bold,italic;public TestMenu() this.setJMenuBar(jmb);jmb.add(fontm
4、enu);jmb.add(helpmenu);fontmenu.add(stylemenu);fontmenu.add(colormenu);fontmenu.addSeparator();/添加分隔线fontmenu.add(exitmenu);helpmenu.add(aboutmenu);stylemenu.add(boldMenuItem);stylemenu.add(italicMenuItem);colormenu.add(redmenu);colormenu.add(bluemenu);colormenu.add(greenmenu);this.getContentPane().
5、add(textDemo);,public static void main(String args) TestMenu frame=new TestMenu();frame.regListener();frame.setTitle(“菜单控制字体和颜色“);frame.setSize(320,280);frame.show(); public void regListener()/为菜单注册监听器italicMenuItem.addActionListener(this);boldMenuItem.addActionListener(this);redmenu.addActionListen
6、er(this);bluemenu.addActionListener(this);greenmenu.addActionListener(this);exitmenu.addActionListener(this); ,public void actionPerformed(ActionEvent e)if(e.getActionCommand().equals(“红色“)textDemo.setForeground(Color.red);else if(e.getActionCommand().equals(“蓝色“)textDemo.setForeground(Color.blue);e
7、lse if(e.getActionCommand().equals(“绿色“)textDemo.setForeground(Color.green);if(e.getActionCommand().equals(“粗体“)bold=(boldMenuItem.isSelected()?Font.BOLD:Font.PLAIN);if(e.getActionCommand().equals(“斜体“)italic=(italicMenuItem.isSelected()?Font.ITALIC:Font.PLAIN);textDemo.setFont(new Font(“Serif“,bold
8、+italic,14);if(e.getActionCommand().equals(“退出“)System.exit(0); ,2.相关知识 菜单栏(JMenuBar),菜单(JMenu),菜单(JMenu),菜单项(JMenuItem),复选菜单项(JCheckBoxMenuItem),单选菜单项(JRadioButtonMenuItem),4级联菜单 添加菜单项:为菜单JMenu添加一个JMenuItem 级联的下级菜单:为菜单JMenu添加另一个JMenu, 可以继续为这个下级菜单添加菜单项或更下一级的菜单 中间级的菜单JMenu不能像菜单项JMenuItem一样接收鼠标的单击事件。7
9、弹出式菜单(JPopupMenu) 特别形式的Menu 性质与Menu相同 不固定在窗口的任何一个位置,由鼠标和系统判断决定JPopupMenu出现的位置。,编写菜单,JMenuBar mB=new JMenuBar();/定义菜单栏,JMenu m=new JMenu (“”);/定义菜单,JMenuItem mI=new JMenuItem (“”); /定义菜单项,mB.add(m);/将菜单添加到菜单栏,m.add(mI);/将菜单项添加到菜单,注意:菜单栏.add(菜单);菜单.add(菜单项); 将菜单栏添加到窗口的方法窗口对象.setJMenuBar(菜单栏),窗口,菜单栏JMe
10、nuBar,菜单JMenu,菜单JMenu,级联菜单,菜单项JMenuItem,复选菜单项JCheckBoxMenuItem,单选菜单项JRadioButtonMenuItem,【应用拓展】,弹出式菜单示例如图,弹出式菜单 JPopupMenu,三、项目17 带有工具栏的窗体,带有工具栏的窗体,工具栏 JToolBar,JButton,工具栏.add(按钮),1.程序代码,/ToolBarTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;
11、public class ToolBarTest extends JFrame implements ActionListener JTextField tf=new JTextField();JToolBar tb=new JToolBar();JButton b1, b2, b3, b4, b5,b6; ToolBarTest()super(“工具栏演示“);creatToolbar(); /创建工具栏setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 200);setVisible(true);,void creatTo
12、olbar()b1=new JButton(new ImageIcon(“new.Gif“);b1.setToolTipText(“新建“); /设置提示文字b1.setRequestFocusEnabled(false); /设置不能获得焦点 b2=new JButton(new ImageIcon(“open.Gif“);b2.setToolTipText(“打开“);b2.setRequestFocusEnabled(false);b3=new JButton(new ImageIcon(“save.Gif“);b3.setToolTipText(“保存“);b3.setRequestF
13、ocusEnabled(false);b4=new JButton(new ImageIcon(“copy.Gif“);b4.setToolTipText(“复制“);b4.setRequestFocusEnabled(false); b5=new JButton(new ImageIcon(“paste.Gif“);b5.setToolTipText(“粘贴“);b5.setRequestFocusEnabled(false);b6=new JButton(“退出“);,tb.add(b1);tb.add(b2);tb.add(b3);tb.addSeparator(); /添加分隔线tb.
14、add(b4);tb.add(b5);tb.add(b6);tb.setRollover(true); /设置转滚效果b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);this.getContentPane().add(tb,“North“); /将工具栏添国到内容窗格this.getContentPane().add(tf
15、,“South“);tb.setFloatable(true); /设置工具栏为可移动,public void actionPerformed(ActionEvent e) if(e.getActionCommand()=“退出“) /判断是否按下的按钮为退出System.exit(0);else if(e.getSource()=b1) /判断是否按下的按钮为新建tf.setText(“你按了新建按钮“);else if(e.getSource()=b2) /判断是否按下的按钮为打开tf.setText(“你按了打开按钮“);else if(e.getSource()=b3) /判断是否按下的按钮为保存tf.setText(“你按了保存按钮“); else if(e.getSource()=b4) /判断是否按下的按钮为复制tf.setText(“你按了复制按钮“); elsetf.setText(“你按了粘贴按钮“); public static void main(String args)ToolBarTest example=new ToolBarTest(); ,2.相关知识 工具栏(JToolBar),