Can I add an action listener to a JLabel?

后端 未结 4 1343
小鲜肉
小鲜肉 2021-02-05 09:59

I want to replace a JButton by a JLabel and I want my code to perform some action when the JLabel is clicked.

When I had the JButton I used action listener to handle cli

相关标签:
4条回答
  • 2021-02-05 10:34

    Add a MouseListener to the JLabel.

    Because JLabel is a Component, you can add MouseListeners to it. Use that interface and write the mouseClicked event on your MouseListener to handle the click.

    0 讨论(0)
  • 2021-02-05 10:39

    An easier approach is to just use a JButton since it already supports this functionality by using an ActionListener.

    You can make the JButton look like a JLabel by using:

    button.setBorderPainted( false );
    

    This approach is for when you want to handle a mouseClick, since an ActionEvent is guaranteed to be generated, whereas as mouseClicked event when using a MouseListener may not be generated in all situations, which can confuse the user.

    0 讨论(0)
  • 2021-02-05 10:42
    /*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");
                    }
    
                });
    
    0 讨论(0)
  • 2021-02-05 10:47

    Sure. JLabels have a method which allow you to attach a MouseListener object. The MouseListener object requires a MouseAdapter() object. MouseAdapter is an abstract class which ideally serves as an Adapter for for creating on the fly listeners to do things.

    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);
        }
    });
    
    0 讨论(0)
提交回复
热议问题