有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以向JLabel添加操作侦听器吗?

我想用JLabel替换JButton,我想让我的代码在单击JLabel时执行一些操作

当我使用JButton时,我使用action listener处理对按钮的单击:

myButton.addActionListener(new clicksListener(arg1,this))

当我用myLabel替换myButton时,我在Eclipse中收到了以下错误消息:

The method addActionListener(ChipsListener) is undefined for the type JLabel

但我知道应该可以将单击处理程序附加到JLabel。有人知道怎么做吗


共 (4) 个答案

  1. # 1 楼答案

    更简单的方法是只使用JButton,因为它已经通过使用ActionListener支持此功能

    您可以使用以下命令使JButton看起来像JLabel:

    button.setBorderPainted( false );
    

    这种方法适用于需要处理鼠标单击的情况,因为ActionEvent保证会生成,而使用MouseListener时的as-mouseClicked事件可能不会在所有情况下生成,这可能会让用户感到困惑

  2. # 2 楼答案

    /*add a mouselistener instead and listen to mouse clicks*/
        jlable.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        System.out.println("Yay you clicked me");
                    }
    
                });
    
  3. # 3 楼答案

    当然。jLabel有一个方法,允许您附加MouseListener对象。MouseListener对象需要一个MouseAdapter()对象。MouseAdapter是一个抽象类,理想情况下,它可以作为一个适配器,用于创建动态监听器来完成任务

    JLabel lb = new JLabel(An image icon, if you'd like.);
    
    //now lets attach a listener to your JLabel
    lb.addMouseListener(new MouseAdapter() 
    {
        @Override
        public void mouseClicked(MouseEvent e) 
        {
            //THIS CODE WILL RUN WHEN THE EVENT OF CLICKING IS RECEIVED.
            //example of something you could do below.
            new Random().ints().limit(60).forEach(System.out::println);
        }
    });
    
  4. # 4 楼答案

    MouseListener添加到JLabel

    因为JLabel是一个Component,所以可以向其中添加MouseListener。使用该接口并在MouseListener上写入mouseClicked事件以处理单击