Eu tenho um código que responde ao mouse, porPor exemplo, quando entro em uma área de imagem, a imagem fica mais escura e quando saio, fica normal, o problema é quando executo o código, tenho 9 imagens e, quando o mouse passa a primeira imagem, fica mais escura e quando vai para outra imagem, novamente a primeira imagem fica mais escura e a segunda imagem não muda.
Aqui está o código:
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");
}
});
}
}
Respostas:
0 para resposta № 1Preciso verificar seu fxml, mas você tem um erro básico no seu código. Você precisa remover a reutilização de onMouseEntered()
e onMouseExit()
.
Tente com
@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);
}