1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Jframe quando é aberto por outro JFrame fica invisível

Estou fazendo um app que imprime pdfs, e nessa impressão o arquivo é dividido em uma pagina por arquivo, por exemplo: um arquivo de 42 páginas se transforma em 42 arquivos com uma pagina cada.

Desenvolvi uma tela, que mostra ao usuário o progresso desse processo, porém quando chamo a tela que divide os pdfs ela fica invisivel... E quando executo direto na classe que divide os arquivos ela funciona normal..

Classe que divide:

public class SplitPDFFile extends JFrame {

    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JProgressBar jProgressBar1;

    public SplitPDFFile(Integer folhas,  String arquivo){


    //    setVisible(true);
    //    setAlwaysOnTop(true);
           jPanel1 = new javax.swing.JPanel();
            jLabel1 = new javax.swing.JLabel();
            jProgressBar1 = new javax.swing.JProgressBar();
            jLabel2 = new javax.swing.JLabel();
            jLabel3 = new javax.swing.JLabel();

            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

            jPanel1.setBackground(new java.awt.Color(255, 255, 255));
            jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)));

            jLabel1.setIcon(new javax.swing.ImageIcon("img/icon_split.png")); // NOI18N

            jProgressBar1.setBorderPainted(false);

            jLabel2.setFont(new java.awt.Font("Leelawadee", 0, 18)); // NOI18N
            jLabel2.setForeground(new java.awt.Color(153, 153, 153));
            jLabel2.setText("Aguarde: Separando arquivo por páginas");

            jLabel3.setFont(new java.awt.Font("Leelawadee", 0, 18)); // NOI18N
            jLabel3.setForeground(new java.awt.Color(153, 153, 153));
            jLabel3.setText("e preparando a impressão");

            jProgressBar1.setBackground(new java.awt.Color(255, 255, 255));
            jProgressBar1.setForeground(new java.awt.Color(0, 0, 255));

            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel1)
                    .addGap(18, 18, 18)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                        .addComponent(jLabel2)
                        .addComponent(jLabel3))
                    .addContainerGap(42, Short.MAX_VALUE))
                .addComponent(jProgressBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(25, 25, 25)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                        .addGroup(jPanel1Layout.createSequentialGroup()
                            .addComponent(jLabel2)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jLabel3))
                        .addComponent(jLabel1))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 38, Short.MAX_VALUE)
                    .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 5, javax.swing.GroupLayout.PREFERRED_SIZE))
            );

            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );

            jProgressBar1.setMinimum(0);
            jProgressBar1.setMaximum(folhas);


           teste(arquivo, folhas);
            pack();
            dispose();
            setUndecorated(true);
            setLocationRelativeTo(null);
            setSize(520, 198);
            setVisible(true);
            setAlwaysOnTop(true); 
             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    }


    public static PdfReader unlockPdf(PdfReader reader) {
        if (reader == null) {
            return reader;
        }
        try {
            java.lang.reflect.Field f = reader.getClass().getDeclaredField("encrypted");
            f.setAccessible(true);
            f.set(reader, false);
        } catch (Exception e) { // ignore
        }
        return reader;
    }

    public void teste(String arquivo, Integer folhas){
        try {
            String inFile = arquivo.toLowerCase();
            System.out.println ("Lendo " + inFile);
            PdfReader reader = new PdfReader(inFile);
            reader.isOpenedWithFullPermissions();
            unlockPdf(reader);
            int n = reader.getNumberOfPages();
            System.out.println ("Numero de páginas : " + n);
            int i = 0;
            while ( i < n ) {
                //String outFile = inFile.substring(0, inFile.indexOf(".pdf")) + "-" + String.format("%03d", i + 1) + ".pdf";
                String outFile =  (i + 1) + ".pdf";
                System.out.println ("Criando o arquivo " + outFile);
                Document document = new Document(reader.getPageSizeWithRotation(1));
                PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile));
                document.open();
                PdfImportedPage page = writer.getImportedPage(reader, ++i);
                writer.addPage(page);
                document.close();
                writer.close();
                jProgressBar1.setValue(i);
                if (i==n){
                    jProgressBar1.setStringPainted(true);
                    dispose();
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
}


    public static void main(String[] args) {


        new SplitPDFFile(58, "C:\\admerp\\tcc.pdf");
    }
}

e este é o método que chama a tela:

new SplitPDFFile(Integer.parseInt(jlbUltimaPagina.getText()), "C:\\admerp\\tcc.pdf");
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags pdf ou faça a sua própria pergunta.