Estoy aprendiendo JavaFX. Quiero mostrar algunos iconos, uno por uno después de unos segundos. Mi código no está funcionando. He escrito algo de código. y los iconos se almacenan en una carpeta separada llamada imágenes .
public class Main extends Application {
ImageView imv;
Scene scene;
@Override
public void start(Stage primarystage) {
gp=new GridPane();
gp.setPadding(new Insets(0, 10, 10, 10));
...
gp.setVgap(0);
gp.setHgap(5);
imv=new ImageView();
// logic for displaying images
scene=new Scene(gp, 450, 300, Color.TRANSPARENT);
primarystage.setScene(scene);
primarystage.setTitle("WINDOW");
primarystage.show();
}
public static void main(String[] args) {
launch(args);
}
}
No pude encontrar respuestas adecuadas en la web. Quiero saber la lógica de cómo se hace, qué más necesito saber. Debido a que una sola imagen que puedo mostrar fácilmente. Pero no sé cómo mostrar varias imágenes de una en una.
Muy bien, he intentado algo para ti. No sé qué es exactamente lo que está buscando, pero este código le dará una idea al menos. He hecho algunas suposiciones. Tienes una carpeta bajo el mismo directorio con el nombre de imágenes que tiene todos los iconos (indicación) como 1.png, 2.png, 3.png, y así sucesivamente. Estoy usando Netbeans 8.2, que importará automáticamente las clases necesarias por parte de los respectivos paquetes.
import javafx.application.Application;
import javafx.concurrent.Task;
...
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
...
public class Main extends Application {
ImageView imv;
Label label;
String file="";
GridPane gridPane;
Scene scene;
Task<Void> slideShow;
@Override
public void start(Stage primarystage) {
gridPane=new GridPane();
gridPane.setPadding(new Insets(0, 10, 10, 10));
// business logic for slide show
startSlideShow();
imv=new ImageView();
label = new Label();
label.setGraphic(imv);
gridPane.add(label, 5, 0, 1, 1);
scene=new Scene(gridPane, 450, 300, Color.TRANSPARENT);
primarystage.setScene(scene);
primarystage.show();
// spawning a new thread for this task
new Thread(slideShow).start();
}
public void startSlideShow() {
slideShow= new Task<Void>() {
@Override
protected Void call() {
int i = 1;
while (true) {
try {
Thread.sleep(1000);
updateMessage(i + ".png");
} catch (Exception e) {
}
i++;
}
}
};
task1.messageProperty().addListener((observable, oldValue, newValue) -> {
Image image = new Image(getClass().getResourceAsStream("images/" + newValue));
imv.setImage(image);
});
}
public static void main(String[] args) {
launch(args);
}
}
Espero que esto funcionará Puede personalizar el código de acuerdo a sus necesidades.