2015-03-13 144 views
0

我有一個代碼,它響應鼠標,例如當我進入圖像區域時,圖像變得更暗,當我退出它,它變得正常,問題是當我運行代碼時,我有9個圖像,當鼠標在第一個圖像上變黑時,當它轉到另一個圖像時,第一個圖像變暗,第二個圖像不變。刪除鼠標事件處理程序JavaFX

下面是代碼:

public class FrameController implements Initializable { 

@FXML 
private GridPane album; 
ImageView im; 

/** 
* Initializes the controller class. 
*/ 
@Override 
public void initialize(URL url, ResourceBundle rb) { 
    // TODO 
} 

@FXML 
private void mouseEntered(MouseEvent event) { 
    im = (ImageView) event.getSource(); 
    System.out.println("Entered: " + im.getId()); 
    im.setOnMouseEntered(new EventHandler<MouseEvent>() { 

     @Override 
     public void handle(MouseEvent event) { 
      ColorAdjust ca = new ColorAdjust(); 
      ca.setBrightness(-0.5); 
      im.setEffect(ca); 
      } 
     }); 
    } 
    @FXML 
    private void mouseExited(MouseEvent event) { 
     im = (ImageView) event.getSource(); 
     System.out.println("Exited: " + im.getId()); 
     im.setOnMouseExited(new EventHandler<MouseEvent>() { 

      @Override 
      public void handle(MouseEvent event) { 
       im.setEffect(null); 
       System.out.println("normal"); 
      } 
     }); 
    } 

} 
+0

你是什麼想法?刪除鼠標處理程序意味着什麼? – NDY 2015-03-13 08:21:35

+0

爲什麼不直接從fxml中刪除'mouseEntered'方法及其用法? – ItachiUchiha 2015-03-13 08:50:53

+0

@NDY我認爲我的問題是愚蠢的,我糾正它 – Yashar 2015-03-13 09:20:47

回答

0

我需要檢查你的FXML,但你必須在你的代碼基本錯誤。您需要刪除重新使用onMouseEntered()onMouseExit()

嘗試用

@FXML 
private void mouseEntered(MouseEvent event) { 
    im = (ImageView) event.getSource(); 
    System.out.println("Entered: " + im.getId()); 
    ColorAdjust ca = new ColorAdjust(); 
    ca.setBrightness(-0.5); 
    im.setEffect(ca); 
} 

@FXML 
private void mouseExited(MouseEvent event) { 
    im = (ImageView) event.getSource(); 
    System.out.println("Exited: " + im.getId()); 
    im.setEffect(null); 
}