gpt4 book ai didi

java - 将单个事件绑定(bind)到Java中的所有JLabels

转载 作者:行者123 更新时间:2023-11-30 03:45:36 24 4
gpt4 key购买 nike

我有 20 个 JLabels,它们都必须在鼠标进入时更改其背景颜色,并在鼠标离开时更改回原始颜色。

我是否必须分别将 MouseEnteredMouseExited 的 2 个事件监听器与所有 JLabel 分别绑定(bind),或者是否有任何解决方法所以我可以只用 2 个事件来监视所有 JLabel

如下图所示:大约有 6 个 JLabels,我希望每个 JLabels 在鼠标进入场景时都更改其背景颜色,并在鼠标离开时变回原始颜色。

enter image description here

那么,我是否必须在所有 JLabels 上单独设置事件监听器,或者所有 JLabels 可以有一个事件监听器?

最佳答案

您可以使用同一个鼠标监听器注册所有 20 个 JLabel。你会做这样的事情:

MouseListener m = new MouseAdapter() // create our own mouse listener
{
@Override
public void mouseEntered(MouseEvent e)
{
e.getComponent().setBackground(Color.RED);; // this method changes the colours of all the labels
}
@Override
public void mouseExited(MouseEvent e)
{
e.getComponent().setBackground(Color.GREEN); // this method changes the colours back to normal
}
};
for (JLabel label: labels) // iterate over all the labels
{
label.addMouseListener(m); // give them all our mouse listener
}

其中“labels”是 JLabels 的一些集合(List、Set、数组...),changeLabelColours() 和 changeLabelColoursBack() 是您定义的用于更改颜色的两个方法。

希望这有帮助!

编辑:阅读您编辑的问题,我想我应该指出,当鼠标悬停在任何标签上时,此代码将导致所有标签改变颜色。我想这就是你的意思。

关于java - 将单个事件绑定(bind)到Java中的所有JLabels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com