麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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

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中的顯示。
  
  從以上的例子我們看到利用鼠標右鍵來啟動彈出式菜單是非常輕易的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区免费 | 狠狠干导航 | 久久生活片 | 久久亚洲精品国产一区 | 成人宗合网 | 久久久久亚洲视频 | 久久久久久久久久久久免费 | 久久激情国产 | 久久久久国产精品久久久久 | 国产精品国产三级国产在线观看 | 19禁国产精品福利视频 | 黄色电影免费网址 | 999精品久久久 | 伊人在线| 蜜桃视频日韩 | 国产精品视频一区二区三区四区国 | 少妇一级淫片高潮流水电影 | 久久综合婷婷 | 日本在线播放一区二区三区 | 91成人一区| 久久精品美乳 | 成人午夜免费国产 | 久久精品亚洲欧美日韩精品中文字幕 | 蝌蚪久久窝 | 日本高清com | 婷婷久久综合九色综合色多多蜜臀 | 毛片毛片| 日韩av有码在线 | 国产亚洲区 | 在线观看免费av网 | 国产69精品久久久久久久久久 | 久久久久久久久久性 | 在线视频 欧美日韩 | 一区二区久久电影 | 毛片免费看电影 | 成人毛片免费 | 麻豆传传媒久久久爱 | 色淫影院 | 在线免费观看麻豆 | 把娇妻调教成暴露狂 | 免费一级毛片在线播放视频 |