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 № 1Muszę 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);
}