mouseEntered不起作用

时间:2015-02-20 02:11:28

标签: java swing mouselistener

我有一个包含5个JLabel个对象的数组,我已经为所有这些对象添加了鼠标监听器,在mouseEntered()函数中我正在使标签为opaque(true)来改变它的背景颜色,但是这个代码无法正常工作,请帮助。

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

1 个答案:

答案 0 :(得分:2)

可能的原因是if(entered.getSource().equals(label))

事件的来源永远不会是label数组,但它将是其中一个元素。更好的条件可能是if(entered.getSource() instanceof JLabel)

更改标签

的不透明度属性后,您还需要entered.getComponent().repaint();