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