MouseListener question

I have a JLabel in a JPanel in a JScrollPane. I want to add a MouseListener to the JLabel, but it's not working.

I can add a MouseListener to the JScrollPane, but not the JLabel for some reason. Help!

[215 byte] By [GooNa] at [2007-11-27 11:21:19]
# 1

have you thought about, well, um,... showing us your code?

petes1234a at 2007-7-29 14:47:58 > top of Java-index,Desktop,Core GUI APIs...
# 2

post your code so that we can help you.

Yannixa at 2007-7-29 14:47:58 > top of Java-index,Desktop,Core GUI APIs...
# 3

the code is basically:

JPanel scrollPanel = new JPanel();

ScrollLabel scrollLabel = new ScrollLabel();

ScrollPanel.add(scrollLabel);

JScrollPane scrollpane = new JScrollPane(scrollPanel);

class ScrollLabel extends JLabel implements MouseListener{

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) { }

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mouseClicked(MouseEvent e) {}

}

GooNa at 2007-7-29 14:47:58 > top of Java-index,Desktop,Core GUI APIs...
# 4

try this:

class ScrollLabel extends JLabel implements MouseListener{

public ScrollLabel(){

addMouseListener(this);

}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) { }

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mouseClicked(MouseEvent e) {}

}

Yannixa at 2007-7-29 14:47:58 > top of Java-index,Desktop,Core GUI APIs...
# 5

perfect. thanks a lot.

GooNa at 2007-7-29 14:47:58 > top of Java-index,Desktop,Core GUI APIs...
# 6

Why are you subclassing JLabel just to add a mouselistener? That is not necessary. Why not just add an anonymous listener like so:

JLabel scrollLabel = new JLabel("My ScrollLabel");

scrollLabel.addMouseListener(new MouseListener()

{

public void mouseClicked(MouseEvent arg0)

{

// TODO do stuff here

}

public void mouseEntered(MouseEvent arg0){}

public void mouseExited(MouseEvent arg0){}

public void mousePressed(MouseEvent arg0) {}

public void mouseReleased(MouseEvent arg0) {}

});

Or you can add a non-anonymous inner class type listener:

{

JLabel scrollLabel = new JLabel("My ScrollLabel");

scrollLabel.addMouseListener(new myMouseListener())

}

class myMouseListener implements MouseListener

{

public void mouseClicked(MouseEvent arg0)

{

// TODO do stuff here

}

public void mouseEntered(MouseEvent arg0){}

public void mouseExited(MouseEvent arg0){}

public void mousePressed(MouseEvent arg0) {}

public void mouseReleased(MouseEvent arg0) {}

}

petes1234a at 2007-7-29 14:47:58 > top of Java-index,Desktop,Core GUI APIs...