?? 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>易都網(wǎng)--Java 2 圖形設(shè)計卷Ⅱ: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,網(wǎng)絡(luò)安全,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> 菜單和工具條是現(xiàn)代用戶界面的重要組成部分。Swing提供了對這兩者的完全支持。Swing提供菜單組件(即菜單條中的菜單和彈出式菜單中的菜單)和菜單項組件(包括復(fù)選框和單選按鈕菜單項)。<br> Swing還提供一個工具條組件,根據(jù)工具條的方向,工具條組件包含一行按鈕或一列按鈕。工具條通常提供對普通特性的簡單訪問。通常,除鍵盤捷徑鍵提供對相同功能的訪問外,菜單欄和工具條不提供對相同功能集的訪問。工具條還可以是懸浮的,這樣,可以把工具條在窗口中任意拖動或拖到一個單獨的窗口中。<br> Swing菜單和菜單項是按鈕,因為JMenuItem擴展AbstractButton,JMenu擴展JMenuItem,如圖10-1所示。因此,Swing菜單和菜單項繼承了如下功能,即包含文本和(或)圖標、顯示光標進入時的圖標和助記符等。<br> 圖10-1示出了JMenuItem和JMenu的父組件,它們最后都歸于java.awt.Container,以強調(diào)菜單和菜單項都是容器。可以把任何類型的組件(從包含一個動畫GIF的標簽到JTree的一個實例)添加到一個菜單或菜單項中。<br> 菜單和菜單項還實現(xiàn)MenuElement接口,以便參與菜單事件的處理。MenuElement接口在10.7節(jié)“菜單元素”中介紹。<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>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -