Java - Crear barra de progreso en Java

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Crear barra de progreso en Java

Publicado por Jenice (2 intervenciones) el 01/11/2019 14:50:14
Tengo un programa en Java donde convierte un Power Point en video pero al ejecutar el botón para la conversión esto se demora un ratico y no se sabe que es lo que está haciendo ni cuando termina. Cuando creo una barra de progreso se congela la ventana y en los ejemplos que muestran en internet no sé cómo unirlo a mi proyecto, es decir, no sé donde puedo poner el código donde me convierte el video. Si me pudieran ayudar con esto y explicarme bien donde puedo poner el código que tengo se los voy a agradecer porque nunca he trabajado con las barras de progreso en Java.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Crear barra de progreso en Java

Publicado por pablo (239 intervenciones) el 01/11/2019 20:56:59
Hola Jenice pues verás lo que yo pienso es que depende de la manera en la que le estes mandando al jprogressbar los datos, es decir de esa aplicación que estas cargando tienes alguna manera de ver el progreso que lleva o de recibirlo, y tendrías que abrir un hilo para que cada vez que se vaya ejecutando tu programa o vaya cargando también este mismo vaya cargando el bar, deja algo de código para ver como cargas esos datos.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Crear barra de progreso en Java

Publicado por Jenice (2 intervenciones) el 04/11/2019 20:07:37
Aquí está el código donde se convierte el Power Point a imágenes y luego creo un video con estas imágenes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public static List<XSLFSlide> crearPNG(String url) throws FileNotFoundException, IOException {
    FileInputStream is = new FileInputStream( url);
    XMLSlideShow pptx = new XMLSlideShow(is);
 
    List<File> images = new ArrayList<>();
 
    Dimension pgsize = pptx.getPageSize();
 
    List<XSLFSlide> slides = pptx.getSlides();
    for (int i = 0; i < slides.size(); i++) {
 
        BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, 1);
 
        Graphics2D graphics = img.createGraphics();
        graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
 
        graphics.setColor(Color.white);
        graphics.clearRect(0, 0, pgsize.width, pgsize.height);
        graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
 
        XSLFSlide slide = slides.get(i);
 
        // render
        slide.draw(graphics);
 
        // save the output
        File pngFile = null;
        if (url.equals("tiempo.pptx")) {
            pngFile = new File("images/slide-mañana/", "slide-" + (i + 1) + ".png");
        } else {
            pngFile = new File("images/slide-tarde/", "slide-" + (i + 1) + ".png");
        }
        System.out.println((i + 1) + ") saving slide to " + pngFile.getName());
        FileOutputStream out = new FileOutputStream(pngFile);
        ImageIO.write(img, "png", out);
        out.close();
 
        images.add(pngFile);
 
    }
 
    pptx.close();
    return slides;
 
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public static void crearVideoManana(String urltosave) throws IOException {
 
    AWTSequenceEncoder enc = AWTSequenceEncoder.create25Fps(new File(urltosave));
 
    int framesToEncode = 300;
 
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-1.png"));
        enc.encodeImage(img);
 
    }
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-2.png"));
        enc.encodeImage(img);
 
    }
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-3.png"));
        enc.encodeImage(img);
 
    }
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-4.png"));
        enc.encodeImage(img);
 
    }
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-5.png"));
        enc.encodeImage(img);
 
    }
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-6.png"));
        enc.encodeImage(img);
 
    }
    for (int i = framesToEncode / 2; i < framesToEncode; i++) {
        BufferedImage img = ImageIO.read(new File("images/slide-mañana/slide-7.png"));
        enc.encodeImage(img);
 
    }
    enc.finish();
}

Lo que pasa es que no se como unir esto al progressbar para cuando termine de crear el video termine también el progressbar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear barra de progreso en Java

Publicado por Renzo (232 intervenciones) el 04/11/2019 21:04:07
Hola
debes crear un thread y colocar el progress bar dentro. El porcentaje de avance deberás actualizarlo con cada archivo procesado.

Saludos

Renzo

http://www.imagineanddo.com/search/label/java
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Crear barra de progreso en Java

Publicado por pablo (239 intervenciones) el 05/11/2019 14:23:05
Hola Jenice, bueno como muchos te han ayudado y te han dado más o menos una idea de lo que podrías hacer yo te recomiendo que el progressbar lo declares en el método crearVideoManana con el frame y todo y que framesToEncode sea la variable que te permite incrementar el progressbar, con un ciclo for adicional general a todo, desde mi punto de vista y lo vas incrementando cada vez que pasa por los for adicionales pero bueno esa es mi manera de verlo, viendolo de esa forma no creo que necesites tanto el thread pero bueno queda tu criterio sí deseas utilizarlo, de todos modos este es mi punto de vista y quizás con el thread salga mejor, pero lo dejo a tu criterio, Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar