繁体   English   中英

如何改变JLabel颜色

[英]how to change JLabel color

我有改变JLabel颜色的问题。 我正在使用三个JLabel变量。 我将鼠标事件放在这个JLabel变量上。 我运行无一不是改变颜色,当我在entring鼠标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)
   {

   }

您的问题是方法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)
{}

不完全确定你在问什么......我认为你的问题是你有两个标签,当你将鼠标输入其中一个标签时,你只想让那个标签有一个红色背景,而不是两个。

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

MouseListener ma = new MouseAdapter() {
    public void mouseEntered(MouseEvent e) {
        e.getComponent().setBackground(Color.RED);
    }
    public void mouseExited(MouseEvent e) {
        e.getComponent().setBackground(null);
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM