gpt4 book ai didi

java - 如何通过鼠标事件改变JLabel的背景颜色?

转载 作者:行者123 更新时间:2023-11-29 05:20:45 26 4
gpt4 key购买 nike

我有一个带有 9 个 JLabelsJPanel,所有的 setBackground() 都为白色,我有鼠标监听器界面类中实现。我的目的是当我在 JLabel 区域左键单击鼠标时,它会将颜色更改为黑色,反之亦然。这是我第一次处理鼠标事件,我被卡住了。我似乎没有正确理解整个概念。你们能帮帮我吗?提前致谢!哦,顺便说一下,我确实知道如果我使用 for-loop 过程会容易得多,但我只是想看看我们是否可以用更难的方法来做。干杯!

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class TilePanelA extends JPanel implements MouseListener
{
JLabel label1;
JLabel label2;
JLabel label3;
JLabel label4;
JLabel label5;
JLabel label6;
JLabel label7;
JLabel label8;
JLabel label9;


public TilePanelA()
{
this.setLayout(new GridLayout(3, 3));
Dimension labelSize = new Dimension(300, 300);

label1 = new JLabel();
label2 = new JLabel();
label3 = new JLabel();
label4 = new JLabel();
label5 = new JLabel();
label6 = new JLabel();
label7 = new JLabel();
label8 = new JLabel();
label9 = new JLabel();

label1.setPreferredSize(labelSize);
label2.setPreferredSize(labelSize);
label3.setPreferredSize(labelSize);
label4.setPreferredSize(labelSize);
label5.setPreferredSize(labelSize);
label6.setPreferredSize(labelSize);
label7.setPreferredSize(labelSize);
label8.setPreferredSize(labelSize);
label9.setPreferredSize(labelSize);

label1.setBackground(Color.WHITE);
label2.setBackground(Color.WHITE);
label3.setBackground(Color.WHITE);
label4.setBackground(Color.WHITE);
label5.setBackground(Color.WHITE);
label6.setBackground(Color.WHITE);
label7.setBackground(Color.WHITE);
label8.setBackground(Color.WHITE);
label9.setBackground(Color.WHITE);

label1.setOpaque(true);
label2.setOpaque(true);
label3.setOpaque(true);
label4.setOpaque(true);
label5.setOpaque(true);
label6.setOpaque(true);
label7.setOpaque(true);
label8.setOpaque(true);
label9.setOpaque(true);

this.add(label1);
this.add(label2);
this.add(label3);
this.add(label4);
this.add(label5);
this.add(label6);
this.add(label7);
this.add(label8);
this.add(label9);

label1.addMouseListener(this);
label2.addMouseListener(this);
label3.addMouseListener(this);
label4.addMouseListener(this);
label5.addMouseListener(this);
label6.addMouseListener(this);
label7.addMouseListener(this);
label8.addMouseListener(this);
label9.addMouseListener(this);
} // end of constructor

public void mousePressed(MouseEvent e)
{
if (e.getSource() == Color.WHITE)
{
setBackground(Color.BLACK);
} else
{
setBackground(Color.WHITE);
}
}

public void mouseReleased(MouseEvent e)
{
}

public void mouseEntered(MouseEvent e)
{
}

public void mouseExited(MouseEvent e)
{
}

public void mouseClicked(MouseEvent e)
{
}
}

最佳答案

e.getSource() 将返回被点击的标签,而不是该标签的颜色(无论如何在您的示例中)

因此,转换为标签:

JLabel theLabel = (JLabel) e.getSource();

然后适本地设置背景:

if (theLabel.getBackground().equals(Color.WHITE))
theLabel.setBackgound(...);

关于java - 如何通过鼠标事件改变JLabel的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873321/

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