Cómo implementar la tecnología de captura de pantalla de páginas web en Java
WebEngine final webEngine = ver .getEngine();
webEngine.load(this.getClass().getResource("web/index.html")
.toExternalForm());
primaryStage.show();
// Forma 1. Monitorear el progreso de carga de webEngine, lo que puede resultar en una página incompleta. cargando
webEngine.getLoadWorker().stateProperty()
.addListener(new ChangeListener
@Override
public void cambiado(ObservableValue ov,
Estado oldState, State newState) {
if (newState == State.SUCCEEDED) {
snapshot(view);
}
}
}});
// Método 2. Utilice la transición para configurar retraso
PauseTransition ptr = new PauseTransition(Duración.segundos(3));
ptr setOnFinished(new EventHandler
@Override. p>
identificador de vacío público (evento ActionEvent) {
instantánea (vista);
}
});
ptr.Play();
Tarea
@Override
llamada de cadena protegida() lanza una excepción {
Thread.sleep(5000);
return null;
}
};
tarea .setOnSucceeded(new EventHandler
@Override
identificador de vacío público (evento WorkerStateEvent) {
instantánea(vista);
}
});
nuevo hilo(tarea).start();
nuevo hilo() {
public void run() {
prueba {
Thread.runLater(new Runnable() {
@Override
public void run() {
snapshot(view); // No puedes operar directamente la interfaz de usuario en el hilo de fondo, necesitas usar runLater
}
}}) ;
} captura ( Interrumpir
tedException e) {
e.printStackTrace();
}
};
}.start();
}
Instantánea de vacío público (vista de nodo) {
Imagen imagen = view.snapshot(null) {
Instantánea de vacío público (vista de nodo) ) {
Imagen imagen = view.snapshot(null)snapshot(null, null);
prueba {
ImageIO.write(SwingFXUtils.fromFXImage(imagen , nulo), "png",
nuevo archivo("f:\\" + System.currentTimeMillage).+ System.currentTimeMillis() + ".png"));
} captura (IOException e) {
e.printStackTrace();
}
}
}
}
}
}>