1

我是Java新手,我想做的很简单,我想JLabel在鼠标进入标签区域时使a具有透明颜色,并在鼠标离开标签区域时使标签恢复其原始颜色。

我想这很简单,并且在我的代码中有效,但是当鼠标在标签上时,我会得到一个奇怪的效果。这是我使用的代码:

mouseEntered标签的情况下:

private void lblNuevoCLMouseEntered(java.awt.event.MouseEvent evt) {                                        
        // TODO add your handling code here:
        bgcolor=(new Color(0, 0, 0, 100));
        lblNuevoCL.setBackground(bgcolor); 
    }    

在鼠标退出事件中:

private void lblNuevoCLMouseExited(java.awt.event.MouseEvent evt) {                                       
    // TODO add your handling code here:
     lblNuevoCL.setBackground(new java.awt.Color(206,206,255));
}  

这是当鼠标进入标签(图像左侧的正方形)时发生的情况:它使用带有 alpha 的 RGB 颜色变得透明,但除了变得透明之外,标签上还会出现一个奇怪的背景,如您在图片中看到的那样。

在此处输入图像描述

4

3 回答 3

3

使JLabel不透明以允许设置背景颜色

lblNuevoCL.setOpaque(true);
于 2013-10-01T16:35:38.520 回答
3

你需要做的是让背景JLabel神奇地消失。做到这一点的方法是使用setOpaque().

setOpaque 所做的是(取自文档):

如果true组件在其边界内绘制每个像素。否则,组件可能不会绘制其部分或全部像素,从而允许底层像素显示出来。

最后一行可以解决您的问题。
当鼠标进入时,您使用它在鼠标退出lblNuevoCL.setOpaque(false);使其具有透明 背景,以便它恢复到原来的颜色。这样,您不必担心背景是什么颜色。
lblNuevoCL.setOpaque(true);

请记住,Ubuntu 的 JLabel 将具有与 Windows 不同的背景颜色。硬编码颜色会导致它看起来很奇怪。

于 2013-10-01T16:40:52.787 回答
1

它使用带有 alpha 的 RGB 颜色变得透明

有关使用透明度时将遇到的问题的解释(和几个解决方案),请参阅具有透明度的背景。

于 2013-10-01T20:01:52.810 回答