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)
{

}
}
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!"); 

}
}两个类,你试下,我今天解决的。

解决方案 »

  1.   

    在面板上注册一个鼠标事件监听器,获取当前鼠标的位置(对应于面板的位置),判断这个位置是否在面板上你所说的特定区域,如果在就show popup。
      

  2.   

    3楼就OK了,其实这东西你可以在GOOGLE上搜搜,很多的
      

  3.   

    package forGUI;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.*;public class forPopup implements MouseListener{
    JFrame frame=new JFrame("forPopup");
    JPopupMenu popMenu=new JPopupMenu();
    JMenuItem mi1=new JMenuItem("新建");
    JMenuItem mi2=new JMenuItem("打开");
    JPanel panel=new JPanel();

    public forPopup(){

    popMenu.add(mi1);
    popMenu.addSeparator();

    popMenu.add(mi2);
    popMenu.addSeparator();
    panel.add(popMenu);


    frame.setLayout(new FlowLayout());
    frame.add(panel);
    frame.addMouseListener(this);
    frame.setSize(400,300);
    frame.setLocation(300,250);
    frame.setResizable(false);
    frame.setVisible(true);

    }

    public static void main(String[] args){
    forPopup pp=new forPopup();
    } @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub

    } @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    } @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    } @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    tiggerEvent(e);
    } @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub
    tiggerEvent(e);
    }
    private void tiggerEvent(MouseEvent e){
    if(e.isPopupTrigger()){//主要的一步
    popMenu.show(e.getComponent(),e.getX(),e.getY());
    }
    }
    }
      

  4.   

    菜单是用JPopupMenu
    菜单元素是用JMenuItem
    菜单元素添加事件用addActionListener
    这是在文本区弹出对话框添加的事件
       textArea.addMouseListener(
    new MouseAdapter()
    {

    public void mouseReleased(MouseEvent e)
    {
                            if(e.isPopupTrigger())

    popUpMenu.show(textArea,e.getX(),e.getY());
                            if(e.getButton() == e.BUTTON1)
                            {
                             checkSelectText();
                            }
                            

                             
    }
        }
    );
    我刚编了个记事本程序,可以交流下