在java中使實現右鍵功能表十分簡單,只需用到一個控制項:PopupMenu.
首先,需要聲明一個PopupMenu對像。
PopupMenu popupMenu1 = new PopupMenu();
然後新建一些子功能表,這裡我們使用建立三個功能表項目
MenuItem menuItem1 = new MenuItem();
MenuItem menuItem2 = new MenuItem();
MenuItem menuItem3 = new MenuItem();
然後再出初化,並加入監聽事件中:
menuItem1.setLabel("功能表1");
menuItem1.addActionListener(new java.awt.event.ActionListener() { //功能表1的事件監聽
public void actionPerformed(ActionEvent e) {
menuItem1_actionPerformed(e); //功能表事件函數
}
});
menuItem2.setLabel("功能表2");
menuItem3.setLabel("功能表3");
popupMenu1.add(menuItem1);
popupMenu1.add(menuItem2);
popupMenu1.add(menuItem3);
//在this中加入popupMenu1
add(popupMenu1);
 
這時,功能表已經加進程式中了,現在我們需要做的就是在點擊右鍵時顯示。
先在init中加入滑鼠的按一下事件,
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
this_mousePressed(e);
}
});
再在this_mousePressed(e);中將功能表顯示出來
void this_mousePressed(MouseEvent e) {
int mods=e.getModifiers();
//滑鼠右鍵
if((mods&InputEvent.BUTTON3_MASK)!=0){
//彈出功能表
popupMenu1.show(this,e.getX(),e.getY());
}
}
//功能表1事件
void menuItem1_actionPerformed(ActionEvent e) {
//功能表事件1
}
好了,講到這裡已經全部結束,是不是非常簡單啊
這裡有一個繼承Panel類的完整的例子
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class Panel1 extends JPanel {
PopupMenu popupMenu1 = new PopupMenu();
MenuItem menuItem1 = new MenuItem();
MenuItem menuItem2 = new MenuItem();
MenuItem menuItem3 = new MenuItem();
 
public Panel1() {
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
this.setLayout(null);
menuItem1.setLabel("功能表1");
menuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
menuItem1_actionPerformed(e);
}
});
menuItem2.setLabel("功能表2");
menuItem3.setLabel("功能表3");
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
this_mousePressed(e);
}
});
popupMenu1.add(menuItem1);
popupMenu1.add(menuItem2);
popupMenu1.add(menuItem3);
add(popupMenu1);
}
 
void this_mousePressed(MouseEvent e) {
int mods=e.getModifiers();
//滑鼠右鍵
if((mods&InputEvent.BUTTON3_MASK)!=0){
//彈出功能表
popupMenu1.show(this,e.getX(),e.getY());
}
}
 
void menuItem1_actionPerformed(ActionEvent e) {
//功能表事件
}
}
 
 
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()