0
JLabelを拡張して独自のButtonクラスを作成しています。 私の目標は、マウスがマウスの上を乗るとすぐにその背景を変更することです。これは私が得たものである ので:スウィング:ブール値がグローバルに変更されていません
public String st;
public boolean hover = false, down = false;
public Button() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
System.out.println(hover); // false
hover = true;
System.out.println(hover); // true
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println(hover); // true
hover = false;
System.out.println(hover); // false
}
@Override
public void mousePressed(MouseEvent e) {
down = true;
}
@Override
public void mouseReleased(MouseEvent e) {
down = false;
}
});
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(mainColor());
g.fillRect(0, 0, getWidth(), getHeight());
}
public Color mainColor() {
return down ? c1 : (hover ? c2 : c3);
// hover is always false
}
何らかの理由で、ブール値はマウスだけリスナー内で変更されます。 物事をもっと混乱させるために、同じコードが別のクラスでもうまく機能します。
"何らかの理由でブール値がマウスリスナー内でのみ変更されます。"これは何を意味するのでしょうか? –
質問を編集して実際のクラスを表示できますか? –
それはあなたがあなたが何をしているのか推測する必要がないように質問をするときに問題を示す適切な[mcve]を投稿したものです。 – camickr