首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mouseEntered不工作

mouseEntered不工作
EN

Stack Overflow用户
提问于 2015-02-20 10:11:28
回答 1查看 796关注 0票数 0

我有一个由5个JLabel对象组成的数组,并且我已经为它们添加了鼠标侦听器,在mouseEntered()函数中,我将标签设置为不透明(True)以更改其背景颜色,但此代码不能正常工作,请帮助。

代码语言:javascript
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-02-20 10:15:32

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

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

在更改标注的不透明度属性后,还需要entered.getComponent().repaint();

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28620583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档