iteye_12441 2010-03-25 21:16 采纳率: 100%
浏览 200
已采纳

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

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

  • 写回答

2条回答 默认 最新

  • suziwen 2010-03-25 22:55
    关注

    对于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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?