0

我在更改 JLabel 颜色时遇到问题。我正在使用三个JLabel变量。我将鼠标事件放在这个JLabel变量上。当我输入鼠标时,我运行并且两者都改变​​了颜色JLabels。我的意思是,JLabel当时我在JLabel变量上输入鼠标时会改变颜色。

请解决这个问题。

    entry.addMouseListener(this);
    entry.setOpaque(true);
    profile.addMouseListener(this);
    profile.setOpaque(true);

    public void mouseClicked(MouseEvent mc)
    {


    }
    public void mouseEntered(MouseEvent me) 
    {
        entry.setBackground(color);
        profile.setBackground(color);
    }
    public void mouseExited(MouseEvent me) 
    {

    entry.setBackground(Color.white);
    profile.setBackground(Color.white);

   }
   public void mousePressed(MouseEvent mp) 
   {

   }
   public void mouseReleased(MouseEvent mr)
   {

   }
4

2 回答 2

1

你的问题是方法setBackground(),改变setForeground()

entry.addMouseListener(this);
entry.setOpaque(true);
profile.addMouseListener(this);
profile.setOpaque(true);

public void mouseClicked(MouseEvent mc)
{}

public void mouseEntered(MouseEvent me) 
{
    entry.setForeground(Color.red);
    profile.setForeground(Color.red);
}

public void mouseExited(MouseEvent me) 
{
    entry.setForeground(Color.white);
    profile.setForeground(Color.white);
}
public void mousePressed(MouseEvent mp) 
{}
public void mouseReleased(MouseEvent mr)
{}
于 2014-02-19T08:38:15.620 回答
1

不完全确定您要问什么...我假设您的问题是您有两个标签,当您将鼠标输入其中一个标签时,您只希望标签具有红色背景,而不是两者。

为此,您可以使用获取触发鼠标事件的标签,e.getComponent()然后仅为该标签设置背景。此外,您可能希望使用setBackground(null)重置背景颜色,因为底层框架的背景可能并不总是白色。最后,您可以使用MouseAdapter类代替MouseListener,为您不需要的所有其他方法提供默认值(无操作)。

MouseListener ma = new MouseAdapter() {
    public void mouseEntered(MouseEvent e) {
        e.getComponent().setBackground(Color.RED);
    }
    public void mouseExited(MouseEvent e) {
        e.getComponent().setBackground(null);
    }
};
于 2014-02-19T11:17:21.037 回答