⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s10.htm

📁 提供给JAVA编程者图形界面卷
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            <p> menuBar.add(fileMenu);<br>              setJMenuBar(menuBar);<br>              }<br>              }<br>              class UnderlineElement extends JButton implements MenuElement {<br>              private boolean drawUnderline = false;</p>            <p> public UnderlineElement(String s) {<br>              super(s);<br>              setBorder(BorderFactory.createEmptyBorder(2,2,2,2));<br>              }<br>              public Component getComponent() {<br>              return this;<br>              }<br>              public MenuElement[] getSubElements() {<br>              return new MenuElement[0];<br>              }<br>              public void menuSelectionChanged(boolean b) {<br>              drawUnderline = b;<br>              repaint();<br>              }<br>              public void paintComponent(Graphics g) {<br>              super.paintComponent(g);</p>            <p> Insets insets = getInsets();</p>            <p> if(drawUnderline) {<br>              FontMetrics fm = g.getFontMetrics();<br>              g.drawLine(insets.left, insets.top + fm.getHeight(),<br>              fm.stringWidth(getText()), <br>              insets.top + fm.getHeight());<br>              }<br>              }<br>              public void processKeyEvent(KeyEvent me,<br>              MenuElement[] element, <br>              MenuSelectionManager msm) {<br>              }<br>              public void processMouseEvent(MouseEvent me) {<br>              super.processMouseEvent(me);<br>              MenuSelectionManager.defaultManager().processMouseEvent(<br>              me);<br>              }<br>              public void processMouseEvent(MouseEvent me, <br>              MenuElement[] element, <br>              MenuSelectionManager msm) {<br>              if(me.getID() == MouseEvent.MOUSE_CLICKED || <br>              me.getID() == MouseEvent.MOUSE_RELEASED) {</p>            <p> msm.setSelectedPath(null);<br>              doClick();<br>              }<br>              else<br>              msm.setSelectedPath(getPath());<br>              }<br>              public MenuElement[] getPath() {<br>              MenuSelectionManager defaultManager = <br>              MenuSelectionManager.defaultManager();<br>              MenuElement oldPath[] = defaultManager.getSelectedPath();<br>              MenuElement newPath[];<br>              int len = oldPath.length;</p>            <p> if(len &gt; 0) {<br>              MenuElement lastElement = oldPath[len-1];<br>              Component parent = getParent();</p>            <p> if (lastElement == parent) {<br>              newPath = new MenuElement[len+1];</p>            <p> System.arraycopy(oldPath, 0, newPath, 0, len);<br>              newPath[len] = this;<br>              }<br>              else {<br>              int j;</p>            <p> for (j = len-1; j &gt;= 0; j--) {<br>              if (oldPath[j].getComponent() == parent)<br>              break;<br>              }<br>              newPath = new MenuElement[j+2];<br>              System.arraycopy(oldPath, 0, newPath, 0, j+1);<br>              newPath[j+1] = this;<br>              }<br>              }<br>              else<br>              return new MenuElement[0];</p>            <p> return newPath;<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 10.8 JPopupMenu</p>            <p>&nbsp;</p>            <p align="center"><b>例10-16 使用弹出式菜单</b></p>            <hr noshade size="1">            import javax.swing.*;<br>            import javax.swing.event.*;<br>            import java.awt.*;<br>            import java.awt.event.*;            <p>public class Test extends JApplet {<br>              public void init() {<br>              Container contentPane = getContentPane();<br>              final JLabel label = new JLabel(&quot;Click here for popup&quot;);<br>              final JPopupMenu popup = new JPopupMenu();<br>              final JSlider slider = new JSlider();</p>            <p> popup.add(new JMenuItem(&quot;Copy&quot;, new ImageIcon(this.getClass().getResource(&quot;copy.gif&quot;))));<br>              popup.add(new CutAction(new ImageIcon(this.getClass().getResource(&quot;cut.gif&quot;))));<br>              popup.addSeparator();<br>              popup.add(slider);</p>            <p> label.addMouseListener(new MouseAdapter() {<br>              public void mousePressed (MouseEvent e) { <br>              popup.show(label, e.getX(), e.getY());<br>              }<br>              });<br>              slider.addChangeListener(new ChangeListener() {<br>              public void stateChanged(ChangeEvent e) {<br>              if( ! slider.getValueIsAdjusting())<br>              popup.setVisible(false);<br>              }<br>              });</p>            <p> label.setHorizontalAlignment(JLabel.CENTER);<br>              contentPane.add(label, BorderLayout.CENTER);<br>              }<br>              class CutAction extends AbstractAction {<br>              java.net.URL iconurl;<br>              <br>              public CutAction(Icon icon) {<br>              //super(&quot;Cut&quot;, new ImageIcon(&quot;cut.gif&quot;));<br>              super(&quot;Cut&quot;,icon);<br>              }<br>              public void actionPerformed(ActionEvent e) {<br>              System.out.println(&quot;cut&quot;);<br>              }<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 10.8.1 弹出式菜单触发器</p>            <p>&nbsp;</p>            <p align="center"><b>例10-17 显示一个弹出式菜单以响应弹出式菜单触发器</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>              private JPopupMenu popup = new JPopupMenu();</p>            <p> public void init() {<br>              Container contentPane = getContentPane();</p>            <p> popup.add(new JMenuItem(&quot;item one&quot;));<br>              popup.add(new JMenuItem(&quot;item two&quot;));<br>              popup.add(new JMenuItem(&quot;item three&quot;));<br>              popup.add(new JMenuItem(&quot;item four&quot;));</p>            <p> contentPane.addMouseListener(new MouseAdapter() {<br>              public void mousePressed (MouseEvent e) { <br>              showPopup(e); <br>              }<br>              public void mouseClicked (MouseEvent e) { <br>              showPopup(e); <br>              }<br>              public void mouseReleased(MouseEvent e) { <br>              showPopup(e); <br>              }<br>              });<br>              }<br>              void showPopup(MouseEvent e) {<br>              if(e.isPopupTrigger())<br>              popup.show(this, e.getX(), e.getY());<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 10.8.2 轻量/中量/重量弹出式菜单</p>            <p>&nbsp;</p>            <p> 10.8.3 弹出式菜单调用者</p>            <p>&nbsp;</p>            <p align="center"><b>例10-18 相对于其调用者显示弹出式菜单</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>              JComboBox combobox = new JComboBox();<br>              JPopupMenu popup = new JPopupMenu();<br>              ColoredCanvas popupRelativeToMe;<br>              ColoredCanvas blueCanvas, redCanvas, yellowCanvas;</p>            <p> public void init() {<br>              Container contentPane = getContentPane();<br>              blueCanvas = new ColoredCanvas(Color.blue);<br>              redCanvas = new ColoredCanvas(Color.red);<br>              yellowCanvas = new ColoredCanvas(Color.yellow);<br>              popupRelativeToMe = blueCanvas;</p>            <p> popup.add(new JMenuItem(&quot;item one&quot;));<br>              popup.add(new JMenuItem(&quot;item two&quot;));<br>              popup.add(new JMenuItem(&quot;item three&quot;));<br>              popup.add(new JMenuItem(&quot;item four&quot;));</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(new JLabel(&quot;Popup Over:&quot;));<br>              contentPane.add(combobox); <br>              contentPane.add(blueCanvas);<br>              contentPane.add(redCanvas);<br>              contentPane.add(yellowCanvas);</p>            <p> combobox.addItem(&quot;Blue Canvas&quot;);<br>              combobox.addItem(&quot;Yellow Canvas&quot;);<br>              combobox.addItem(&quot;Red Canvas&quot;);</p>            <p> combobox.addItemListener(new ItemListener() {<br>              public void itemStateChanged(ItemEvent event) {<br>              if(event.getStateChange() == ItemEvent.SELECTED) {<br>              JComboBox c = (JComboBox)event.getSource();<br>              String label = (String)c.getSelectedItem();</p>            <p> if(label.equals(&quot;Blue Canvas&quot;))<br>              popupRelativeToMe = blueCanvas;<br>              else if(label.equals(&quot;Red Canvas&quot;))<br>              popupRelativeToMe = redCanvas;<br>              else if(label.equals(&quot;Yellow Canvas&quot;))<br>              popupRelativeToMe = yellowCanvas;</p>            <p> popup.show(popupRelativeToMe, 5, 5);<br>              }<br>              }<br>              });<br>              }<br>              }<br>              class ColoredCanvas extends JPanel {<br>              private Color color;</p>            <p> public ColoredCanvas(Color color) {<br>              this.color = color;<br>              }<br>              public void paintComponent(Graphics g) {<br>              super.paintComponent(g);</p>            <p> Dimension size = getSize();<br>              g.setColor (color);<br>              g.fill3DRect(0,0,size.width-1,size.height-1,true);<br>              }<br>              public Dimension getPreferredSize() {<br>              return new Dimension(100,100);<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 10.8.4 JPopupMenu属性</p>            <p>&nbsp;</p>            <p> 10.8.5 JPopupMenu事件</p>            <p>&nbsp;</p>            <p align="center"><b>例10-19 弹出式菜单事件的清单</b></p>            <hr noshade size="1">            import javax.swing.*;<br>            import javax.swing.event.*;<br>            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.beans.*;            <p>public class Test extends JApplet {<br>              public void init() {<br>              final Container contentPane = getContentPane();<br>              final JPopupMenu popup = new JPopupMenu();<br>              <br>              popup.add(new JMenuItem(&quot;item one&quot;));<br>              popup.add(new JMenuItem(&quot;item two&quot;));<br>              popup.add(new JMenuItem(&quot;item three&quot;));<br>              popup.add(new JMenuItem(&quot;item four&quot;));</p>            <p> popup.addPopupMenuListener(new PopupMenuListener() {<br>              public void popupMenuCanceled(PopupMenuEvent e) {<br>              showStatus(&quot;menu canceled&quot;);<br>              }<br>              public void popupMenuWillBecomeVisible(<br>              PopupMenuEvent e) {<br>              showStatus(&quot;menu will become visible&quot;);<br>              }<br>              public void popupMenuWillBecomeInvisible(<br>              PopupMenuEvent e) {<br>              showStatus(&quot;menu will become invisible&quot;);<br>              }<br>              });<br>              addMouseListener(new MouseAdapter() {<br>              public void mousePressed (MouseEvent e) { <br>              popup.show(contentPane, e.getX(), e.getY());<br>              }<br>              });<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 10.8.6 JPopupMenu类总结</p>            <p>&nbsp;</p>            <p align="center"><b>例10-20 为弹出式菜单设置位置、边框和调用者</b></p>            <hr noshade size="1">            import javax.swing.*;<br>            import java.awt.*;<br>            import java.awt.event.*;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -