如何寫出像下面那樣子的滑鼠右鍵就碰出選單。
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
全站熱搜