熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

鼠標右鍵的使用和啟動彈出式菜單

2013-11-15 09:49:39  來源: JSP教程 

  本文將通過實例介紹如何用鼠標右鍵啟動彈出式菜單以及如何執行菜單的
  指令
  
  大家對彈出式菜單(Popup Menu)的使用相信都非常熟悉了
  我們將通過如下的例子解釋如何在Java中使用右鍵和彈出式菜單主程序是一個Java Application
  叫UseRightButton它上面是一個JPanel在此JPanel上有一個JLabel用以顯示彈出式菜單
  中指令執行的結果我們要求當用鼠標右鍵點擊JLabel或者JPanel上時彈出一個菜單菜單
  中有Say HelloSay Hello againSay Byebye三個選項選擇其中的任何一個指令將在
  JLabel中顯示對應的String
  
  在本例中有兩個Class一個是UseRightButton (Java應用程序)另一個是MyPopupMenu
  (彈出式窗口)UseRightButton的源程序如下
  
  
  
  
  
  import javaxswing*;import javaawteventMouseEvent;import javaawteventMouseListener;import javaawt*;public class UseRightButton extends JFrame implements MouseListener{ JPanel panel; JLabel display; public UseRightButton() { setTitle(Use right button and popup menu); setSize(); panel = new JPanel(); display = new JLabel( ); displaysetOpaque(true); displaysetBackground(Coloryellow); paneladd(display); paneladdMouseListener(this); displayaddMouseListener(this); getContentPane()setLayout(new BorderLayout()); getContentPane()add(panel BorderLayoutCENTER); } public static void main(String[] args) { UseRightButton rb = new UseRightButton(); rbsetVisible(true); } public void mousePressed(MouseEvent e) { if (egetSource() == panel && egetButton() == MouseEventBUTTON) { MyPopupMenu popup = new MyPopupMenu(this); popupshow((Component)panel egetX() egetY()); } else if (egetSource() == display && egetButton() == MouseEventBUTTON) { MyPopupMenu popup = new MyPopupMenu(this); popupshow((Component)display egetX() egetY()); } } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseReleased(MouseEvent e){}}
  
  從上面的程序我們看到
  
  
  
  
  和使用鼠標左鍵一樣我們是用 來控制鼠標事件我們所要做的是限制 MouseEvent 響應鼠標右鍵的點擊不響應鼠標左鍵的點擊這可由下面的方法來實現
  egetButton() == MouseEventBUTTON
  其中 getButton() 方法返回一個整數
  MouseEventBUTTON
  MouseEventBUTTON 或者
  MouseEventBUTTON
  MouseEventBUTTON 代表左鍵
  MouseEventBUTTON 代表右鍵如果你的鼠標有三個
  鍵的話MouseEventBUTTON 代表中間的鍵
  
  
  JLabel (display)僅僅占據 JPanel 的一小部分(我們用黃色背景顯示它的大小和位置)
  而我們要求當右鍵電擊JPanel包括JLabel都要彈出菜單所以我們把JPanel和
  JLabel都加上MouseListener
  
  
  
  彈出式菜單Class的源程序如下
  
  
  import javaxswing*;import javaawteventActionListener;import javaawteventActionEvent;public class MyPopupMenu extends JPopupMenu implements ActionListener{ JMenuItem sayHello sayHelloAgain sayByeBye; UseRightButton useRightButton; public MyPopupMenu(UseRightButton urb) { useRightButton = urb; sayHello = new JMenuItem(Say Hello); sayHelloAgain = new JMenuItem(Say Hello again); sayByeBye = new JMenuItem(Say Bye Bye); sayHelloaddActionListener(this); sayHelloAgainaddActionListener(this); sayByeByeaddActionListener(this); add(sayHello); thisaddSeparator(); add(sayHelloAgain); add(sayByeBye); } public void actionPerformed(ActionEvent e) { if (egetSource() == sayHello) { Systemoutprintln(); useRightButtondisplaysetText(Hello!); } else if (egetSource() == sayHelloAgain) { Systemoutprintln(Hello! Hello!); useRightButtondisplaysetText(Hello! Hello!); } else if (egetSource() == sayByeBye) { Systemoutprintln(Bye Bye!); useRightButtondisplaysetText(Bye Bye!); } }}
  
  這個程序很簡單是一個標准的JPopupMenu唯一需要指出的是在
  constructor中我們引入該彈出式菜單的 base 類UseRightButton 這是因為
  我們要返回彈出式窗口中指令執行的結果到原來的GUI界面上很顯然我們
  不能用 useRightButton = new UseRightButton()因為兩個class不能互相引用
  對於一個復雜的應用程序我們應該使用ModelViewController架構來作
  用彈出式菜單當controller用JLabel (display)作為View 再寫一個model類來接
  收來自彈出式菜單的String並自動更新JLabel中的顯示
  
  從以上的例子我們看到利用鼠標右鍵來啟動彈出式菜單是非常容易的
  

From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19180.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.