/ / Usuń obsługę zdarzeń myszy JavaFX - javafx

Usuń obsługę zdarzeń myszy JavaFX - javafx

Mam kod, który odpowiada myszyna przykład, kiedy wchodzę w obszar obrazu, obraz staje się ciemniejszy, a kiedy go opuszczam, staje się normalny, problem polega na tym, że uruchamiam kod, mam 9 obrazów, a kiedy mysz przechodzi do pierwszego obrazu, staje się ciemniejszy, a gdy idzie do inny obraz, ponownie pierwszy obraz ciemnieje, a drugi obraz się nie zmienia.

Oto kod:

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");
}
});
}

}

Odpowiedzi:

0 dla odpowiedzi № 1

Muszę sprawdzić twój plik fxml, ale masz podstawowy błąd w kodzie. Musisz usunąć ponowne użycie onMouseEntered() i onMouseExit().

Spróbuj z

@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);
}