2017-03-29 58 views
1

所以我想爲一個簡單的java遊戲做一個菜單,當鼠標懸停在它們上面時,按鈕會改變顏色。我沒有使用JButton,而是使用mouselistener來檢測點擊的按鈕圖片。當鼠標懸停在按鈕所在的特定區域上時,我如何製作MouseEntered?java - 當鼠標懸停在它上面時,獲得一個按鈕來改變顏色

public void mouseEntered(MouseEvent e) { 
    if(e.getX() < 950 && e.getX() > 350 && e.getY() < 300 && e.getY() > 200){ 
     menuImage2 = true; 
     menuImage1 = false; 
    } 
} 

這是我迄今爲止

+0

不能這樣做object.setBackground = menuImage2? –

+0

也許更多object.setBackground(menuImage2);它取決於menuImage2的定義和類型 – azro

回答

0

這是我做到了。它也播放聲音。你只是使用標誌。請注意,我使用mouseMoved而不是mouseEntered。

類MouseInput

@Override 
public void mouseMoved(MouseEvent e) { 
     int x=e.getX(); 
     int y=e.getY(); 

     if (x>100&&x<200&&y>150&&y<200) { 
      if (mouseInStart==false) {  <---- if this line is true, means mouse entered for first time. 
       Sound.playSound(soundEnum.BUTTONHOVER); 
      } 
      mouseInStart=true; 
     } else { 
      mouseInStart=false; 
     } 
} 

public boolean mouseInStart() { <--use this in your update method 
    return mouseInStart; 
} 

而在我其他類(級菜單)

public void render(Graphics2D g) { 
    .... 
    .... 
    gradient = new GradientPaint(100, 150, setStartColor(), 200, 200,  Color.gray); 
    g.setPaint(gradient); 
    g.fill(startButton); 

} 

public Color setStartColor() { 
    if (mouseInStart) { 
     return Color.red; 
    } else { 
     return Color.white; 
    } 
} 


public void update() {  <--- and this is to keep checking if your mouse is in start. This is part of the giant game loop. 
    mouseInStart=mouseInput.mouseInStart(); 
    mouseInLoad=mouseInput.mouseInLoad(); 
    mouseInQuit=mouseInput.mouseInQuit(); 
} 
相關問題