java - 颜色(Alpha)通过鼠标悬停而改变,直到出现工具提示

标签 java swing tooltip alpha jcheckbox

我目前尝试添加一些带有工具提示的 JCheckBox 实例。只要用户选择或取消选择 JCheckBox(通过 ItemListener),这些工具提示就会发生变化。但是:每次我检查 JCheckbox 时,它都会更改颜色(Alpha),因此它变得不那么透明,所以看起来背景的 Alpha 发生了变化。一旦我等待工具提示,它就会变回来,但这仍然让我有点恼火。

这是我的代码:

public class MyBox extends JCheckBox {

private final String onSelected;
private final String onNotSelected;
private int index;



public MyBox(int index){
    super();
    this.setDoubleBuffered(true);
    this.index = index;
    this.onSelected = "ABC";
    this.onNotSelected = "DEF";
    this.setToolTipText(this.onNotSelected);
    super.setOpaque(true);
    this.setBackground(new Color(0, 0, 255, 80));

    Dimension size = new Dimension(10,10);
    this.setHorizontalAlignment(SwingConstants.CENTER);
}

public int getIndex(){
    return this.index;
}

public void setTooltipFor(boolean selected){
     String setto = selected ? onSelected : onNotSelected;
     this.setToolTipText(setto);
}

public void disableEditing(){
    this.setEnabled(false);
}
}

public class MyListener implements ItemListener{



public MyListener(){
}



@Override
public void itemStateChanged(ItemEvent ie) {
    MyBox box =((MyBox) ie.getItemSelectable());

    int index = box.getIndex();

    if(ie.getStateChange() == ItemEvent.SELECTED){
       box.setTooltipFor(true);
    }
   else{
       box.setTooltipFor(false);
   }
} 
}

Listener 是在另一个类中添加的(增改工程)。问题仍然存在:为什么 alpha 会发生变化(颜色变得更不透明和更暗),我该如何避免这种情况?

最佳答案

But: Everytime I go over the JCheckbox it changes the Color (the Alpha) so it becomes less transparent

是的,Swing 不知道如何正确处理透明颜色,因为您违反了绘画规则。

查看 Backgrounds With Transparency了解更多信息和解决方案。您可以:

  1. 自己做背景的定制绘画
  2. 使用提供的AlphaContainer 类为您绘制

关于java - 颜色(Alpha)通过鼠标悬停而改变,直到出现工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36691654/

相关文章:

java.lang.Object 不能转换为 int

c++ - 如何修改 CToolTipCtrl 的工具矩形?

html - 在 title =""字段中放置 div 标签是否有效

java - 无法理解将 long 和 float 相加然后乘以 double 的方程的答案如何有意义

java - Camel 指标 : use route id in counter name

java - 用Java文件方法删除Jar快捷方式

java - Derby 嵌入式驱动程序错误 XBM02 请确保您的类路径包含正确的 Derby 软件

java - 如何将我单击的 JButton 的组件传输到我单击的第二个 JButton?

html - V-tooltip 出现在手机屏幕外

java - 修改JList内容后正确更新其内容