当前位置: 首页 > 面试题库 >

在JButton上悬停时出现奇怪的颜色变化

宋原
2023-03-14
问题内容

好的,所以当我想使用透明度时,我偶然发现了一个问题。

因此,用于更改悬停背景的代码是…

 received.setMouseListener(new MouseAdapter()
 @Override 
 public void mouseEntered(MouseEvent me) 
 {
        received.setBackground(new Color(50,50,50,100));
 } 
});

一开始,我为按钮设置了蓝色。

这是显示颜色变化的gif …

GifMeme09541718022016.gif
https://drive.google.com/file/d/0B9XFyaTVy8oYci1zMmRhMmtYcnM/view?usp=docslist_api

为什么会这样?如果这不是正确的方法,那么正确的方法是什么?


问题答案:

基本上,Swing仅了解如何绘制透明和不透明的
组件,不知道如何处理半透明的组件,因此使用
基于alpha的背景色会引起问题。

相反,您需要通过控制组件
背景的绘制方式来“伪造”它,例如…

public class FakeTransperencyButton extends JButton {

    private float alpha = 0;

    public FakeTransperencyButton(String text) {
        super(text);
        setOpaque(false);
        setBackground(Color.RED);

        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                alpha = 0.4f;
                repaint();
            }

            @Override
            public void mouseExited(MouseEvent e) {
                alpha = 0f;
                repaint();
            }

        });
    }

    @Override
    public boolean isOpaque() {
        return false;
    }

    public float getAlpha() {
        return alpha;
    }

    protected void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g.create();
        g2d.setComposite(AlphaComposite.SrcOver.derive(getAlpha()));
        g2d.setColor(getBackground());
        g2d.fillRect(0, 0, getWidth(), getHeight());
        g2d.dispose();
        super.paintComponent(g);
    }

}


 类似资料:
  • 只是尝试在CSS中练习悬停和下拉。在下面的代码中,我希望每当下拉子div(带有Home1文本的绿色div)悬停在上面时,的背景色(红色)应该更改为蓝色。 会很感激你的帮助。 null null

  • 每一个,我都在使用angular并且我有一个svg,html,比如: 这是svg源代码filter_default: 我想知道当鼠标悬停时如何改变svg的颜色,谢谢大家的帮助!

  • 我在HTML中添加了SVG。我想做的是,当鼠标悬停在SVG上时,将其更改为淡黄色,转换为1s。 HTML中的CSS是: 超文本标记语言的内容: 猛禽。svg内容如下: 或者,我尝试使用CSS在鼠标移动期间改变颜色: 它也不能工作,因为CSS属性不能更改SVG填充颜色。 我错过了什么?我必须使用内联SVG吗?

  • 我正在尝试将按钮的背景色从蓝色淡入白色,并将字体颜色从白色淡入蓝色。我查了其他帖子。 这是我的小提琴:http://jsfiddle.net/t533wbuy/1/ 我用这把小提琴作为参考:http://jsfiddle.net/visualdecree/SvjHx/ 我的问题是: 我希望它是一个按钮,而不是一个按钮 Css html 点击这里申请 jQuery

  • 问题内容: 我需要更改悬停按钮的颜色。 这是我的解决方案,但是不起作用。 问题答案: 表示“正在悬停的链接是该类链接的子链接”。 代替。

  • 在我的Twitter引导网站,我有一个导航栏。 我为它们添加btn-成功或btn-危险类用于颜色标记。 我这样做是因为当用户更改主题(css)时,按钮会显示在该主题上。 我使用的是。所以背景是黑色的。我将按钮链接的颜色更改为白色。但问题是,当用户将鼠标悬停在按钮上时,按钮变为透明,颜色无法读取。 所以我需要导航栏按钮是可见的,即使用户在上面悬停。我希望悬停与否时按钮颜色相同。 我的小提琴:http