awt做的一個label對象,如何響應鼠標右擊事件?

用awt做了一個label對象,現在想讓它在鼠標右擊時,響應某個方法, 請問監聽器應該怎麼寫?

对于Lablel效果一样的
只要把PANEL改成LABEL就行了

[code="java"]/**

  • */

/**

  • @author suziwenen
  • @version Mar 25, 2010 10:42:43 PM / import javax.swing.;

import java.awt.*;
import java.awt.event.*;

public class CallByMouse {

    /**
     * @author Linyq.
     */
    public static void main(String[] args) {
            JFrame.setDefaultLookAndFeelDecorated(true);
            MyFrame frm = new MyFrame();
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

class MyFrame extends JFrame{

    public MyFrame(){
            this.setTitle("MouseEvent 测试");
            this.setSize(600,300);
            this.setBackground(Color.DARK_GRAY);
            this.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));

            final JLabel label = new JLabel("鼠标没有任何动作");
            this.getContentPane().add(label);
            //      此文本标签用来记录鼠标动作

            final JLabel xy = new JLabel("鼠标不在panel容器范围中");
            this.getContentPane().add(xy);
            //      此文本标签用来显示当前鼠标坐标

            final JLabel wheel = new JLabel("滚轮等待动作..");
            this.getContentPane().add(wheel);
            //      此文本标签用来显示滚轮状态

            //      panel
            Label __label = new Label("gggggggggggggggggg\ngggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg");
            //Label _l = new Label("dasfasdfsdf");
           //
            //__label.setLayout(null);
            __label.setSize(500,200);
            __label.setBackground(Color.white);
            this.getContentPane().add(__label);

            //      鼠标事件(按下、释放、单击、进入或离开)的侦听器接口
            __label.addMouseListener(new MouseListener(){

                    public void mouseClicked(MouseEvent e) {
                            //      鼠标按键在组件上单击(按下并释放)时调用
                            label.setText("鼠标在panel容器上单击(按下并释放)");
                    }

                    public void mouseEntered(MouseEvent e) {
                            //      鼠标进入到组件上时调用
                            label.setText("鼠标进入panel容器");
                    }

                    public void mouseExited(MouseEvent e) {
                            //      鼠标离开组件时调用
                            label.setText("鼠标离开panel容器");
                    }

                    public void mousePressed(MouseEvent e) {
                            //      鼠标按键在组件上按下时调用
                            if(e.getClickCount()==2){
                                    JOptionPane.showMessageDialog(null,"鼠标在panel容器上双击!");
                            }
                            if(e.getButton()==e.BUTTON3){
                                    label.setText("鼠标右键在panel容器上按下");
                            }
                            if(e.getButton()==e.BUTTON1){
                                    label.setText("鼠标左键在panel容器上按下");
                            }
                            if(e.getButton()==e.BUTTON2){
                                    label.setText("鼠标中键在panel容器上按下");
                            }
                    }

                    public void mouseReleased(MouseEvent e) {
                            //      鼠标按钮在组件上释放时调用
                            label.setText("鼠标在panel容器上释放");
                    }

            });
            //      鼠标移动事件的侦听器接口
            __label.addMouseMotionListener(new MouseMotionListener(){

                    @Override
                    public void mouseDragged(MouseEvent e) {
                            //      鼠标按键在组件上按下并拖动时调用
                            label.setText("鼠标在panel上按下并拖动");
                    }

                    @Override
                    public void mouseMoved(MouseEvent e) {
                            //      鼠标光标移动到组件上但无按键按下时调用
                            xy.setText("当前位置  (x:" + e.getX() + ",y:" + e.getY() + ") ");
                    }

            });

            //      鼠标滚轮事件的侦听器接口
            __label.addMouseWheelListener(new MouseWheelListener(){

                    @Override
                    public void mouseWheelMoved(MouseWheelEvent e) {
                            //      鼠标滚轮旋转时调用
                            wheel.setText("滚轮向" + (e.getWheelRotation()>0?"下":"上") + "滚动");
                    }

            });          

            this.setVisible(true);
    }

}[/code]

可以参考这个

public void mousePressed(MouseEvent e) {
                            //      鼠标按键在组件上按下时调用
                            if(e.getClickCount()==2){
                                    JOptionPane.showMessageDialog(null,"鼠标在panel容器上双击!");
                            }
                            if(e.getButton()==e.BUTTON3){
                                    label.setText("鼠标右键在panel容器上按下");
                            }

[code="java"]/**

  • */

/**

  • @author suziwenen
  • @version Mar 25, 2010 10:42:43 PM / import javax.swing.;

import java.awt.*;
import java.awt.event.*;

public class CallByMouse {

    /**
     * @author Linyq.
     */
    public static void main(String[] args) {
            JFrame.setDefaultLookAndFeelDecorated(true);
            MyFrame frm = new MyFrame();
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

class MyFrame extends JFrame{

    public MyFrame(){
            this.setTitle("MouseEvent 测试");
            this.setSize(600,300);
            this.setBackground(Color.DARK_GRAY);
            this.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));

            final JLabel label = new JLabel("鼠标没有任何动作");
            this.getContentPane().add(label);
            //      此文本标签用来记录鼠标动作

            final JLabel xy = new JLabel("鼠标不在panel容器范围中");
            this.getContentPane().add(xy);
            //      此文本标签用来显示当前鼠标坐标

            final JLabel wheel = new JLabel("滚轮等待动作..");
            this.getContentPane().add(wheel);
            //      此文本标签用来显示滚轮状态

            //      panel
            Panel panel = new Panel();
            panel.setLayout(null);
            panel.setSize(500,200);
            panel.setBackground(Color.black);
            this.getContentPane().add(panel);

            //      鼠标事件(按下、释放、单击、进入或离开)的侦听器接口
            panel.addMouseListener(new MouseListener(){

                    public void mouseClicked(MouseEvent e) {
                            //      鼠标按键在组件上单击(按下并释放)时调用
                            label.setText("鼠标在panel容器上单击(按下并释放)");
                    }

                    public void mouseEntered(MouseEvent e) {
                            //      鼠标进入到组件上时调用
                            label.setText("鼠标进入panel容器");
                    }

                    public void mouseExited(MouseEvent e) {
                            //      鼠标离开组件时调用
                            label.setText("鼠标离开panel容器");
                    }

                    public void mousePressed(MouseEvent e) {
                            //      鼠标按键在组件上按下时调用
                            if(e.getClickCount()==2){
                                    JOptionPane.showMessageDialog(null,"鼠标在panel容器上双击!");
                            }
                            if(e.getButton()==e.BUTTON3){
                                    label.setText("鼠标右键在panel容器上按下");
                            }
                            if(e.getButton()==e.BUTTON1){
                                    label.setText("鼠标左键在panel容器上按下");
                            }
                            if(e.getButton()==e.BUTTON2){
                                    label.setText("鼠标中键在panel容器上按下");
                            }
                    }

                    public void mouseReleased(MouseEvent e) {
                            //      鼠标按钮在组件上释放时调用
                            label.setText("鼠标在panel容器上释放");
                    }

            });
            //      鼠标移动事件的侦听器接口
            panel.addMouseMotionListener(new MouseMotionListener(){

                    @Override
                    public void mouseDragged(MouseEvent e) {
                            //      鼠标按键在组件上按下并拖动时调用
                            label.setText("鼠标在panel上按下并拖动");
                    }

                    @Override
                    public void mouseMoved(MouseEvent e) {
                            //      鼠标光标移动到组件上但无按键按下时调用
                            xy.setText("当前位置  (x:" + e.getX() + ",y:" + e.getY() + ") ");
                    }

            });

            //      鼠标滚轮事件的侦听器接口
            panel.addMouseWheelListener(new MouseWheelListener(){

                    @Override
                    public void mouseWheelMoved(MouseWheelEvent e) {
                            //      鼠标滚轮旋转时调用
                            wheel.setText("滚轮向" + (e.getWheelRotation()>0?"下":"上") + "滚动");
                    }

            });          

            this.setVisible(true);
    }

}[/code]