0
我正在创建自己的Button类,扩展了JLabel。 我的目标是在鼠标悬停在其上方时立即更改其背景。 所以这是我得到:Swing:布尔值全局变化
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