Programa trava depois de compilado

3 respostas
B

Olá, sou novo no fórum e tenho um problema atípico, estou programando com netbeans e minha aplicação funciona perfeitamente na IDE, mas, depois de compilado o programa simplesmente trava ao instanciar uma classe, vejam o trecho do código:

private void JBPagarActionPerformed(java.awt.event.ActionEvent evt) {                                        
        this.setEnabled(false);
        JRSOC rsoc = new JRSOC(); // ERRO AQUI
        try {
            rso.setSolicitante(JTSolicitante.getText());
            rso.setRetirante(JTRetirante.getText());
            rso.setDataRetirada(hoje);
            rso.setTipo("COMUM");
            if(rsoc.Imprimir(
                    rso.getSerie(), 
                    rso.getNumero(), 
                    Integer.parseInt(JTQuantidade.getText()), 
                    rso.getSolicitante(), 
                    rso.getRetirante()))
            {
                daorso.InsereRSO(rso, Integer.parseInt(JTQuantidade.getText()));
            }
        } catch (HeadlessException | NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Erro desconhecido\n" + e);
        } finally {
            this.dispose();
        }
    }

Ao instanciar JRSOC ele trava, mas só depois de compilado, na IDE continua normalmente.
Alguém já teve esse problema?

3 Respostas

fmstefanini

Oi @Beny,

rola de postar a classe JRSOC ou pelo menos o construtor dela (caso tenha sobrescrevido) pra poderem dar uma olhada? :wink:

B

Aqui está:

public class JRSOC {
    
    public JRSOC() {
        initComponents();
        initComponentes();
    }
    
    private void initComponentes() {
        // omitido - apenas ajusta apresentação de alguns componentes
    }
    
    public boolean Imprimir(String serie, int numero, int qtd, String solicitante, String retirou) {
        boolean retorno = false;
        // Converte mm em pntos considerando 72 pontos por polegada
        final double cm = 2.834646D;
        final double w = 210.0 * cm;
        final double h = 297.0 * cm;
        PrinterJob trabImpressao = PrinterJob.getPrinterJob();
        Book livro = new Book();
        PageFormat pagFormato = new PageFormat();
        Paper papel = new Paper();
        
        papel.setSize(w, h);
        papel.setImageableArea(18.0, 20.0, w, h);
        pagFormato.setOrientation(PageFormat.PORTRAIT);
        pagFormato.setPaper(papel);
        
        numero++;
        
        DecimalFormat df = new DecimalFormat("00000");
        mudaNumero(serie, numero, solicitante, retirou);
        
        trabImpressao.setJobName(" RSO(" + lblNumeroFrente.getText() + " até "
                + serie + " " + df.format((numero + qtd) - 1));

        
        if (trabImpressao.printDialog() == true) {
            try {
                for (int i = 0; i < qtd; i++) {
                    livro.append(new multPrint(serie, numero + i, 'F', qtd, solicitante, retirou), pagFormato);
                    livro.append(new multPrint(serie, numero + i, 'V', qtd, solicitante, retirou), pagFormato);
                    trabImpressao.setPageable(livro);
                    retorno = true;
                    //trabImpressao.print();
                }
                trabImpressao.print();
            } catch (PrinterException ex) {
                return false;
            }
        }
        return retorno;
    }
    
    private class multPrint implements Printable {
        
        String serie;
        int numero;
        char lado;
        int qtd;
        String solicitante;
        String retirou;
        
        public multPrint(String serie, int numero, char lado, int qtd, String solicitante, String retirou) {
            this.serie = serie;
            this.numero = numero;
            this.lado = lado;
            this.qtd = qtd;
            this.solicitante = solicitante;
            this.retirou = retirou;
        }

        @Override
        public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
            if (pageIndex > (qtd * 2)) {
                    return Printable.NO_SUCH_PAGE;
                }

            Graphics2D g2 = (Graphics2D) graphics;
            g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
            switch (lado) {
                case 'F':
                    mudaNumero(serie, numero, solicitante, retirou);
                    pnlFrente.paint(g2);
                    break;
                case 'V':
                    mudaNumero(serie, numero, solicitante, retirou);
                    pnlVerso.paint(g2);
                    break;
            }
            
            return Printable.PAGE_EXISTS;
        }
    }
    
    private void mudaNumero(String serie, int numero, String solicitante, String retirou) {
        DecimalFormat df = new DecimalFormat("00000");
        CodBarras barras = new CodBarras();
        lblNumeroFrente.setText(serie + " " + df.format(numero));
        lblNumeroVerso.setText(serie + " " + df.format(numero));
        lblCodBarras.setIcon(barras.ImgIconCodBarras(serie + df.format(numero)));
        lblNovidades17.setText(" RSO solicitado por " + solicitante 
                + " e enviado via " + retirou);
    }
    
        private void initComponents() {
        // omitido - apenas ajusta apresentação de alguns compenentes
    }
    
    // Declaração das variáveis
    ...
    // Fim da declaração
}

A classe toda é muito grande mas a parte omitida é apenas ajuste de componentes

leomcabral

@Beny, mostre o conteúdo do método initComponentes pode ser nele o problema. Provavelmente não é no initComponents já que ele é gerado pelo NetBeans (estou assumindo que vc está utilizando o NetBeans já que ele cria esse tipo de estrutura).

Criado 23 de dezembro de 2015
Ultima resposta 31 de dez. de 2015
Respostas 3
Participantes 3