📄 s10.htm
字号:
<SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up.js"></SCRIPT><SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up-all.js"></SCRIPT><html><head><title>易都网--Java 2 图形设计卷Ⅱ:SWING</title><LINK rel="stylesheet" href="../../../_public/javaa.css"><meta http-equiv="Content-Type" content="text/html; charset=GBK"><script language="JavaScript" src="../../../_public/javaa.js"></script><meta name="keywords" content="Java,JSP,ASP,PHP,J2EE,EJB,JavaScript,C/C++,ASM,CSS,HTML,XML,网络安全,MySQL,ACCESS"></head><body bgcolor="#FFFFFF"><table border=0 cellpadding=0 cellspacing=0 width="100%"> <tbody> <script language="javascript">print2()</script> <tr> <td width="100%"> <table bgcolor=#EEEEEE border=0 cellpadding=3 cellspacing=0 width="100%"> <tbody> <tr> <td class=f1 id=thetd width="100%"> <p>[<a href="index.html" target="_self">目录</a>][<a href="s09.htm">上一页</a>][<a href="s11.htm">下一页</a>]</p> <p align="center"><b>第10章 菜单和工具条</b></p> <p> 菜单和工具条是现代用户界面的重要组成部分。Swing提供了对这两者的完全支持。Swing提供菜单组件(即菜单条中的菜单和弹出式菜单中的菜单)和菜单项组件(包括复选框和单选按钮菜单项)。<br> Swing还提供一个工具条组件,根据工具条的方向,工具条组件包含一行按钮或一列按钮。工具条通常提供对普通特性的简单访问。通常,除键盘捷径键提供对相同功能的访问外,菜单栏和工具条不提供对相同功能集的访问。工具条还可以是悬浮的,这样,可以把工具条在窗口中任意拖动或拖到一个单独的窗口中。<br> Swing菜单和菜单项是按钮,因为JMenuItem扩展AbstractButton,JMenu扩展JMenuItem,如图10-1所示。因此,Swing菜单和菜单项继承了如下功能,即包含文本和(或)图标、显示光标进入时的图标和助记符等。<br> 图10-1示出了JMenuItem和JMenu的父组件,它们最后都归于java.awt.Container,以强调菜单和菜单项都是容器。可以把任何类型的组件(从包含一个动画GIF的标签到JTree的一个实例)添加到一个菜单或菜单项中。<br> 菜单和菜单项还实现MenuElement接口,以便参与菜单事件的处理。MenuElement接口在10.7节“菜单元素”中介绍。<br> 工具条和弹出式菜单都扩展JComponent类,即任意组件都可以添加到一个工具条或弹出式菜单中。<br> 本章将介绍下面的组件:<br> ·JMenuItem<br> ·JCheckBoxMenuItem<br> ·JRadioButtonMenuItem<br> ·JMenu<br> ·JPopupMenu<br> ·JMenuBar<br> ·JToolBar<br> </p> <p> <b>10.1 菜单、菜单栏和工具条</b></p> <p> </p> <p align="center"><b>例10-1 JRootPane中的菜单栏和工具条</b></p> <hr noshade size="1"> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JApplet {<br> Icon <br> dukeStanding = new ImageIcon("duke_standing.gif"),<br> dukeWaving = new ImageIcon("duke_waving.gif"),<br> dukeStandingSmall = <br> new ImageIcon("duke_standing_small.gif"),<br> dukeWavingSmall = new ImageIcon("duke_waving_small.gif");</p> <p> public void init() {<br> Container contentPane = getContentPane();<br> Action[] actions = {<br> new NewAction(),<br> new OpenAction(),<br> new CutAction(),<br> new CopyAction(),<br> new PasteAction(),<br> new ExitAction()<br> };<br> JToolBar toolbar = new JToolBar();<br> JMenuBar menubar = new JMenuBar();<br> JMenu fileMenu = new JMenu("File");</p> <p> JRadioButton <br> menubarDuke = new JRadioButton(dukeStandingSmall),<br> menuDuke = new JRadioButton(dukeStandingSmall),<br> toolbarDuke = new JRadioButton(dukeStanding);<br> <br> menuDuke.setRolloverIcon(dukeWavingSmall);<br> menubarDuke.setRolloverIcon(dukeWavingSmall);<br> toolbarDuke.setRolloverIcon(dukeWaving);</p> <p> menubar.add(menubarDuke);<br> toolbar.add(toolbarDuke);<br> fileMenu.add(menuDuke);</p> <p> for(int i=0; i < actions.length; ++i) {<br> fileMenu.add(actions[i]);</p> <p> if(i != actions.length-1)<br> toolbar.add(actions[i]);</p> <p> if(i == 2 || i == actions.length-2){<br> toolbar.addSeparator();<br> fileMenu.addSeparator();<br> }<br> }<br> menubar.add(fileMenu);</p> <p> contentPane.add(toolbar, BorderLayout.NORTH);<br> getRootPane().setJMenuBar(menubar);<br> System.out.println(contentPane.getClass().getName());<br> LayoutManager lm = contentPane.getLayout();<br> System.out.println(lm.getClass());</p> <p> }<br> class NewAction extends AbstractAction {<br> public NewAction() {<br> super("New ...", new ImageIcon("new.gif"));<br> }<br> public void actionPerformed(ActionEvent event) {<br> showStatus("new");<br> }<br> }<br> class OpenAction extends AbstractAction {<br> public OpenAction() {<br> super("Open ...", new ImageIcon("open.gif"));<br> }<br> public void actionPerformed(ActionEvent event) {<br> showStatus("open");<br> }<br> }<br> class CutAction extends AbstractAction {<br> public CutAction() {<br> super("Cut", new ImageIcon("cut.gif"));<br> }<br> public void actionPerformed(ActionEvent event) {<br> showStatus("cut");<br> }<br> }<br> class CopyAction extends AbstractAction {<br> public CopyAction() {<br> super("Copy", new ImageIcon("copy.gif"));<br> }<br> public void actionPerformed(ActionEvent event) {<br> showStatus("copy");<br> }<br> }<br> class PasteAction extends AbstractAction {<br> public PasteAction() {<br> super("Paste", new ImageIcon("paste.gif"));<br> }<br> public void actionPerformed(ActionEvent event) {<br> showStatus("paste");<br> }<br> }<br> class ExitAction extends AbstractAction {<br> public ExitAction() {<br> super("Exit");<br> putValue(Action.SMALL_ICON, dukeWavingSmall);<br> }<br> public void actionPerformed(ActionEvent event) {<br> System.exit(0);<br> }<br> }<br> }</p> <hr size="1" noshade> <p> <b>10.2 菜单和弹出式菜单</b></p> <p> </p> <p align="center"><b>例10-2 一个简单的菜单举例</b></p> <hr noshade size="1"> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JApplet {<br> public void init() {<br> JMenuBar mb = new JMenuBar();<br> JMenu fileMenu = new JMenu("File");<br> JMenu pullRightMenu = new JMenu("pull right");</p> <p> fileMenu.add("New ...");<br> fileMenu.add("Open ...");<br> fileMenu.add("Save");<br> fileMenu.add("Save As ..");<br> fileMenu.addSeparator();<br> fileMenu.add(pullRightMenu);<br> fileMenu.add("Exit");</p> <p> pullRightMenu.add(new JCheckBoxMenuItem("Bush"));<br> pullRightMenu.add(new JCheckBoxMenuItem("Tonic"));<br> pullRightMenu.add(new JCheckBoxMenuItem("Radio Head"));<br> pullRightMenu.add(new JCheckBoxMenuItem("Marcy Playground"));<br> pullRightMenu.add(new JCheckBoxMenuItem("Silver Chair"));</p> <p> mb.add(fileMenu);<br> setJMenuBar(mb);<br> }<br> }</p> <hr size="1" noshade> <p> <b>10.3 JMenuItem</b></p> <p> </p> <p align="center"><b>例10-3 安装一些菜单项</b></p> <hr noshade size="1"> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JApplet {<br> public void init() {<br> Container contentPane = getContentPane();<br> Icon newIcon = new ImageIcon("new.gif", <br> "Create a new document");<br> Icon openIcon = new ImageIcon("open.gif",<br> "Open an existing document");</p> <p> JMenuBar mb = new JMenuBar();<br> JMenu fileMenu = new JMenu("File");</p> <p> JMenuItem newItem = new JMenuItem(newIcon);<br> JMenuItem openItem = new JMenuItem("Open ...", openIcon);<br> JMenuItem saveItem = new JMenuItem("Save");<br> JMenuItem saveAsItem = new JMenuItem("Save As ...");<br> JMenuItem exitItem = new JMenuItem("Exit", 'x');</p> <p> fileMenu.add(newItem);<br> fileMenu.add(openItem);<br> fileMenu.add(saveItem);<br> fileMenu.add(saveAsItem);<br> fileMenu.addSeparator();<br> fileMenu.add(exitItem);</p> <p> MenuItemListener listener = new MenuItemListener(this);</p> <p> newItem.addActionListener(listener);<br> openItem.addActionListener(listener);<br> saveItem.addActionListener(listener);<br> saveAsItem.addActionListener(listener);</p> <p> exitItem.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> System.exit(0);<br> }<br> });</p> <p> mb.add(fileMenu);<br> setJMenuBar(mb);<br> }<br> }<br> class MenuItemListener implements ActionListener {<br> private JApplet applet;</p> <p> public MenuItemListener(JApplet applet) {<br> this.applet = applet;<br> }<br> public void actionPerformed(ActionEvent e) {<br> JMenuItem item = (JMenuItem)e.getSource();<br> ImageIcon icon = (ImageIcon)item.getIcon();</p> <p> if(icon != null)<br> System.out.println(icon.getDescription());<br> else<br> System.out.println(item.getText());<br> }<br> }</p> <hr size="1" noshade> <p> <b>10.3.1 菜单项快捷键助记符键</b></p> <p> </p> <p align="center"><b>例10-4 带助记符键和快捷键的菜单项</b></p> <hr noshade size="1"> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JFrame {<br> public Test() { <br> Container contentPane = getContentPane();</p> <p> JMenuBar mb = new JMenuBar();<br> JMenu fileMenu = new JMenu("File");<br> JMenuItem exitItem = new JMenuItem("Exit");</p> <p> fileMenu.add("New ...");<br> fileMenu.add("Open ...");<br> fileMenu.add("Save");<br> fileMenu.add("Save As ..");<br> fileMenu.addSeparator();<br> fileMenu.add(exitItem);</p> <p> exitItem.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> System.exit(0);<br> }<br> });</p> <p> KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_X, <br> Event.ALT_MASK);<br> exitItem.setAccelerator(ks);</p> <p> fileMenu.setMnemonic('F');<br> exitItem.setMnemonic(KeyEvent.VK_X);</p> <p> mb.add(fileMenu);<br> setJMenuBar(mb);<br> }<br> public static void main(String args[]) {<br> GJApp.launch(new Test(), <br> "Accelerators and Mnemonics",300,300,450,300);<br> }<br> }<br> class GJApp extends WindowAdapter {<br> static private JPanel statusArea = new JPanel();<br> static private JLabel status = new JLabel(" ");</p> <p> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h) {<br> f.setTitle(title);<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -