Dúvida com impressão de frames

Pessoal eu tenho apenas dois frames E cada um corresponde a uma tela. O primeiro chama o segundo através de um JButton e o imprime.
No action performed desse botão eu inseri este código:

Impressao impressao = new Impressao(formulario); Impressao.imprimir();

Onde formulario é o frame irei imprimir. Mas está dando erro dizendo que o método imprimir não é estático e está fazendo referência a um método estático.

Alguém poderia me ajudar?

A classe de impressão é essa:

[code]class Impressao implements Printable {
private static Formulario formulario;
JFrame frameToPrint;

public Impressao(JFrame f) {
    frameToPrint = f;
}

public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
    if (page > 0) {

        return NO_SUCH_PAGE;
    }

    Graphics2D g2d = (Graphics2D) g;

    g2d.translate(pf.getImageableX(), pf.getImageableY());
    frameToPrint.printComponents(g);

    return PAGE_EXISTS;
}

public void imprimir() {
    PrinterJob job = PrinterJob.getPrinterJob();

    job.setPrintable(this);

    boolean ok = job.printDialog();

    if (ok) {
        try {
            job.print();
        } catch (PrinterException ex) {
            // O trabalho não terminou com sucesso
            JOptionPane.showMessageDialog(null, "Ocorreu um erro na impressão, por favor tente novamente");
        }
    }
}

}[/code]

Esse é o frame que será impresso:

[code]public class Formulario extends javax.swing.JFrame {

public Formulario(Dados_Pessoais dados_pessoais) {
    this.dados_pessoais = dados_pessoais;

    this.setVisible(false);
    setSize(476,330);

    setLocationRelativeTo(null);
    initComponents();
}



private void initComponents() {

    blá, blá, blá...
}                  

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Formulario().setVisible(true);
        }
    });
}
               
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel l_backgroundFormulario;
private javax.swing.JTextField l_funcionarioRelatorio;
private javax.swing.JTextField l_funcionarioRelatorio1;
private javax.swing.JTextField tf_cargoFormulario;
private javax.swing.JTextField tf_orgaoEmissorFormulario;
private javax.swing.JTextField tf_registroGeralFormulario;
private javax.swing.JTextField tf_registroGeralFormulario1;
                   
private static Dados_Pessoais dados_pessoais;

}[/code]

Classe main do frame que solicitará a impressão:

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { dados_pessoais = new Dados_Pessoais(); formulario = new Formulario(dados_pessoais); new Dados_Pessoais().setVisible(true); } }); }

Por favor amigos ajudem!!

Fala brow,

Acho que a questao aqui eh como voce esta chamando…
Olha so, quando voce faz:

// Voce instancia uma variaval impressao, que possui o metodo imprimir()
Impressao impressao = new Impressao(formulario);
// Mas aqui, voce esta usando a classe (repare no I maiusculo)
// Acho que para resolver, substitua a proxima linha...
Impressao.imprimir(); // Referenciando a classe
// por...
impressao.imprimir(); // Referenciando a instancia

Abraco!

Poxa irmão, obrigado. Um erro tão bobo que não consegui enxergar. Valeu mesmo.