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!!