我目前尝试使用工具提示添加一些实例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);
}
}
}
的监听器被添加到另一个类中(添加和更改作品)。问题仍然存在:为什么alpha会发生变化(颜色变得更加不透明和暗),我如何避免这种情况?
但是:每次我检查JCheckbox它会改变颜色(Alpha),所以它变得不那么透明
是的,Swing不知道如何正确处理透明颜色,因为你违反了绘画规则。
查看具有透明度的背景以获取更多信息和解决方案。您可以:
AlphaContainer
类为您绘制