現在、ツールチップを使用していくつかのインスタンスJCheckBoxを追加しようとしています。これらのツールヒントは、ユーザーが(ItemListenerを介して)JCheckBoxを選択または選択解除するたびに変更されます。しかし、:JCheckboxを調べるたびに、色(アルファ)が透明になるように変更されるので、背景のアルファベットが変わるようです。私はツールヒントを待つとすぐに元に戻りますが、これはまだ私を少し悩ますものです。ここでツールチップが表示されるまでマウスオーバーで色(アルファ)が変更される
は私のコードです:リスナーの
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);
}
}
}
別のクラス(作品の追加や変更)に追加されます。問題は残っています:なぜアルファが変わるのですか(色はより不透明で暗くなります)、どうすればそれを避けることができますか?
:次のいずれかを実行でき半透明の背景を使用しています。つまり、コンポーネントが**不透明ではありません。代わりに不透明度をfalseに設定する必要があります。 – kiheru
Swing 'background'プロパティ(' JFrame'を除く)にアルファベースの色を使用しないでください。Swingコンポーネントは半透明ではなく、不透明または透明です。あなたが半透明を望むなら、あなたはそれを偽造する必要があります(例:http://stackoverflow.com/questions/20361432/translucent-jlabel-not-properly-showing-background/20362223#20362223) – MadProgrammer
@kiheru申し訳ありませんが、これは完全に間違っています:色を描画するように、私は半透明の色( "new Color(0、0、255、80)"のように)を設定しようとします。したがって、opque = true - // - - MadProgrammerはこのヒントのおかげですが、これについては分かりませんでした。 – blackwodka86