如何寫出像下面那樣子的滑鼠右鍵就碰出選單。

1.一開始沒東東

2.點擊滑鼠右鍵

3.按下TEST 出現訊息

程式碼:

 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;

public class Popup extends JFrame{
JPopupMenu pop;
public static void main(String[] args) {
Popup p = new Popup();
p.setTitle("如何設計出滑鼠右鍵選單");
p.setSize(300,300);
p.setVisible(true);
}

private void FMouseReleased(MouseEvent evt) {
int mod = evt.getButton();
//連點左鍵2次嚕
if(evt.getClickCount()==2 && mod==MouseEvent.BUTTON1){
JOptionPane.showMessageDialog(null,"連點左鍵2次嚕");
}
if(evt.isPopupTrigger()){
pop.show(this, evt.getX(), evt.getY());
}
}

private void FMousePressed(MouseEvent evt) {
processEvent(evt);
}

private void processEvent(MouseEvent e) {
if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {
//按下右鍵
int modifiers = e.getModifiers();
//原始按鍵碼 去掉 右鍵碼 加上 左鍵碼 = 只按左鍵
//也就是把右鍵變成相當於左鍵 這東西在設計TABLE方面有用
modifiers -= MouseEvent.BUTTON3_MASK;
modifiers |= MouseEvent.BUTTON1_MASK;
//製造滑鼠事件
MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(), e
.getWhen(), modifiers, e.getX(), e.getY(), e
.getClickCount(), false);
//給FRAME 傳送 滑鼠事件
this.dispatchEvent(ne);
}
}

public Popup(){
pop = new JPopupMenu();
JMenuItem mi = new JMenuItem("test");
mi.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent evt) {
JOptionPane.showMessageDialog(null,"按下test按鈕了!");
}

});
pop.add(mi);
addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
FMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
FMouseReleased(evt);
}
});
}
}

 

19~28:式設計滑鼠放開事件

20: 取得按鈕式按什麼

22~27:是判斷滑鼠是否連點2次 且是 滑鼠左鍵

30~32:是設計滑鼠壓下事件

31:處理訊息函數 自己設計

34~49:說明看程式碼註解

52:新增PopupMenu就是像上面圖片2一樣東西的元件

63~70:新增按鈕到PopupMenu元件,並且新增一個事件點擊他畫跳出視窗。

原始碼:Popup.rar

 

arrow
arrow
    全站熱搜

    eric1300460 發表在 痞客邦 留言(2) 人氣()