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

时间:2011-03-10 13:48:44

标签: java swing

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

当我使用JButton时,我使用了动作监听器来处理按钮上的点击:

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

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

  

方法   addActionListener(ChipsListener)是   未定义类型JLabel

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

4 个答案:

答案 0 :(得分:26)

MouseListener添加到JLabel

由于JLabelComponent,您可以向其添加MouseListener。使用该界面并在mouseClicked上写下MouseListener事件来处理点击。

答案 1 :(得分:11)

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

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

button.setBorderPainted( false );

这种方法适用于想要处理mouseClick的情况,因为保证生成ActionEvent,而使用MouseListener时的mouseClicked事件可能不会在所有情况下生成,这会使用户感到困惑。

答案 2 :(得分:10)

/*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 :(得分:0)

好的。 JLabel具有允许您附加MouseListener对象的方法。 MouseListener对象需要一个MouseAdapter()对象。 MouseAdapter是一个抽象类,在理想情况下可充当Adapter,用于在运行中创建侦听器来执行操作。

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