国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 13:24:55
字體:
來源:轉載
供稿:網友

  本文將通過實例介紹如何用鼠標右鍵啟動彈出式菜單,以及如何執行菜單的
  指令。
  
  大家對彈出式菜單(Popup Menu)的使用相信都非常熟悉了。
  我們將通過如下的例子解釋如何在java中使用右鍵和彈出式菜單:主程序是一個Java application
  叫UseRightButton,它上面是一個JPanel,在此JPanel上有一個JLabel,用以顯示彈出式菜單
  中指令執行的結果。我們要求當用鼠標右鍵點擊JLabel或者JPanel上時彈出一個菜單,菜單
  中有"Say Hello","Say Hello again","Say Byebye"三個選項。選擇其中的任何一個指令,將在
  JLabel中顯示對應的String.
  
  在本例中有兩個Class。一個是UseRightButton (Java應用程序),另一個是MyPopupMenu
  (彈出式窗口)。UseRightButton的源程序如下:
  
  
  
  
  
  import javax.swing.*;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.*;public class UseRightButton extends JFrame implements MouseListener{ JPanel panel; JLabel display; public UseRightButton() { setTitle("Use right button and popup menu"); setSize(400,300); panel = new JPanel(); display = new JLabel(" "); display.setOpaque(true); display.setBackground(Color.yellow); panel.add(display); panel.addMouseListener(this); display.addMouseListener(this); getContentPane().setLayout(new BorderLayout()); getContentPane().add(panel, BorderLayout.CENTER); } public static void main(String[] args) { UseRightButton rb = new UseRightButton(); rb.setVisible(true); } public void mousePRessed(MouseEvent e) { if (e.getSource() == panel && e.getButton() == MouseEvent.BUTTON3) { MyPopupMenu popup = new MyPopupMenu(this); popup.show((Component)panel, e.getX(), e.getY()); } else if (e.getSource() == display && e.getButton() == MouseEvent.BUTTON3) { MyPopupMenu popup = new MyPopupMenu(this); popup.show((Component)display, e.getX(), e.getY()); } } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseReleased(MouseEvent e){}}
  
  從上面的程序我們看到:
  
  
  
  
  和使用鼠標左鍵一樣,我們是用 來控制鼠標事件。我們所要做的是限制 MouseEvent 響應鼠標右鍵的點擊,不響應鼠標左鍵的點擊。這可由下面的方法來實現
  e.getButton() == MouseEvent.BUTTON3
  其中 getButton() 方法返回一個整數,
  MouseEvent.BUTTON1,
  MouseEvent.BUTTON2 或者
  MouseEvent.BUTTON3。
  MouseEvent.BUTTON1 代表左鍵,
  MouseEvent.BUTTON3 代表右鍵。假如你的鼠標有三個
  鍵的話,MouseEvent.BUTTON2 代表中間的鍵。
  
  
  JLabel (display)僅僅占據 JPanel 的一小部分(我們用黃色背景顯示它的大小和位置)。
  而我們要求當右鍵電擊JPanel,包括JLabel,都要彈出菜單,所以我們把JPanel和
  JLabel都加上MouseListener。
  
  
  
  彈出式菜單Class的源程序如下:
  
  
  import javax.swing.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;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"); sayHello.addActionListener(this); sayHelloAgain.addActionListener(this); sayByeBye.addActionListener(this); add(sayHello); this.addSeparator(); add(sayHelloAgain); add(sayByeBye); } public void actionPerformed(ActionEvent e) { if (e.getSource() == sayHello) { System.out.println(); useRightButton.display.setText("Hello!"); } else if (e.getSource() == sayHelloAgain) { System.out.println("Hello! Hello!"); useRightButton.display.setText("Hello! Hello!"); } else if (e.getSource() == sayByeBye) { System.out.println("Bye Bye!"); useRightButton.display.setText("Bye Bye!"); } }}
  
  這個程序很簡單,是一個標準的JPopupMenu。唯一需要指出的是在
  constrUCtor中我們引入該彈出式菜單的 base 類,UseRightButton。 這是因為
  我們要返回彈出式窗口中指令執行的結果到原來的GUI界面上。很顯然我們
  不能用 useRightButton = new UseRightButton(),因為兩個class不能互相引用。
  對于一個復雜的應用程序,我們應該使用Model-View-Controller架構來作,即
  用彈出式菜單當controller,用JLabel (display)作為View, 再寫一個model類來接
  收來自彈出式菜單的String,并自動更新JLabel中的顯示。
  
  從以上的例子我們看到利用鼠標右鍵來啟動彈出式菜單是非常輕易的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁昌县| 涪陵区| 贺兰县| 上林县| 青岛市| 柳河县| 东阿县| 镇康县| 中阳县| 锡林浩特市| 始兴县| 且末县| 中山市| 衡山县| 育儿| 邵阳市| 四川省| 平舆县| 磐石市| 旬邑县| 弋阳县| 张家港市| 库伦旗| 兴国县| 南溪县| 汶上县| 乾安县| 周宁县| 咸阳市| 金溪县| 西城区| 舒兰市| 上高县| 威宁| 阳东县| 蓬安县| 荔波县| 北碚区| 阿坝| 浦北县| 晋江市|