Pagina 1 di 1

[JAVA] jpanel in pdf

Inviato: martedì 19 maggio 2015, 19:37
da racerider
Ciao a tutti ragazzi, ho un problema un po' insolito :D
mi servirebbe di mettere ciò che ho all'interno del mio jpanel (testo compreso) all'interno di un file pdf (o comunque aver la possibilità di stamparlo).
Vado ad essere più chiaro, il mio programma ha al suo interno delle informazioni formattate in un certo modo, per esempio delle tabelle con poi un radio button ecc, l'utente deve aver la possibilità di trasformare in cartaceo (mantenendo la stessa formattazione) ciò che l'applicazione produce.

Ho letto qualcosa riguardo al trasformare il mio jpanel in un pdf e la cosa mia ha incuriosito molto solo che non trovo spunti validi, tipo in questo codice come potrei fare?

Codice: Seleziona tutto

public class Main extends javax.swing.JPanel {


    public Main() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jRadioButton1 = new javax.swing.JRadioButton();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        jTextField1.setText("Prova testo");

        jRadioButton1.setText("Prova radio");

        jButton1.setText("Stampa");

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jTextArea1.setText("Prova di text area");
        jScrollPane1.setViewportView(jTextArea1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(jButton1))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 488, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jRadioButton1))
                        .addGap(0, 689, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jRadioButton1)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 256, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 221, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addContainerGap())
        );
    }// </editor-fold>                        


    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
}


Re: [JAVA] jpanel in pdf

Inviato: venerdì 22 maggio 2015, 12:17
da cortinico
Ciao,

Sì si può fare utilizzando il metodo

Codice: Seleziona tutto

print(Graphics)
sui controlli swing che hai creato (quindi i vari jButton e compagnia bella...)
Come Graphics gli devi passare un

Codice: Seleziona tutto

PdfGraphics2D
e dovresti essere apposto.

In particolare puoi dare un'occhiata a questo articolo:
http://www.javaworld.com/article/207619 ... o-pdf.html

Dove mi pare sia spiegato molto bene. Nel caso prova ad implementarlo e riposta il codice se hai dei problemi