Reputation: 437
I have an array of 5 JLabel
objects and I have added mouse listener to all of them, in mouseEntered()
function I am making the label opaque(true) to change its background color, but this code is not working properly, please help.
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class A extends MouseAdapter {
JFrame frame = new JFrame();
JLabel label[] = new JLabel[5];
A() {
frame.setSize(500,500);
frame.setLayout(new FlowLayout());
for(int i=0; i<5; i++) {
label[i] = new JLabel("LABEL: "+i);
label[i].setBackground(Color.BLACK);
label[i].addMouseListener(this);
frame.add(label[i]);
}
frame.setVisible(true);
}
public static void main(String arg[]) {
new A();
}
@Override
public void mouseEntered(MouseEvent entered) {
if(entered.getSource().equals(label))
((JLabel)entered.getComponent()).setOpaque(true);
}
}
Upvotes: 0
Views: 930
Reputation: 347194
The likely cause is if(entered.getSource().equals(label))
The source of the event will never be the label
array, but will be one of it's elements. A better condition might be if(entered.getSource() instanceof JLabel)
And you'll also need entered.getComponent().repaint();
after you change the opacity property of the label
Upvotes: 2