kra criei um jdesktop aplication…
soh que nao sei como imprimir uma jtable()
nao sei se uso o ireport.
Qual a melhor forma de imprimir o conteudo de uma jtable()???
por que você não usa o proprio metodo JTable o metodo print() ???
Rafa valeu …realmente eh a melhor opçao …
Soh que toh com uma duvida eh que tem um cabeçalho para ser impresso tbem…e ele esta
dividido em jlabel poderia me auxiliar para que eu o imprima junto com os dados da tabela.
Abraçao!!
ai eu não tenho ideia como posso ti ajudar foi mal!
Eh mais ou menos assim consigo imprimir a tabela com a funçao print() e tudo soh q essa tabela soh tem os dados do orçamento preciso criar um campo com os dados do cliente antes de pedir para imprimir a tabela…
entende??
como insiro esses dados antes
de pedir pra imprimir a tabela…
sera que tenho que criar um funçao print()
desenhar esses valores e dpois chamar a funçao table.print()
??
kra e se a impressão já fosse em um papel timbrado ou com esse cabeçalho desejado não resolve?
não tem como você criar um outra coluna na tabela e colocar esses dados só para imprimir ? Ou até mesmo a ideia do luciano é legal !
Mas kra pensa assim…tenho dois internal frame …um recebe os dados dos clientes. e armazena em labels.
o outro recebe os dados dos produtos e envia pra jtable.
os labes e a tabela estao na mesma classe.
Estava pensando no seguinte instanciar a funçao print() da seguinte forma.
chame tudo que for necessario.{
desenhe os labels.(aqui o x.drawn…)
desenhe a tabela(no caso o jtable.print())
print()
}
Entende mais ou menos o q quero fazer…soh que tah foda
nao tenho muita experiencia em impressao.
Acha que pode dar certo??
acho que sim cara da um tentada ai
Olá maicon.santiago,
Procurando em outro tópico (http://www.guj.com.br/posts/list/63580.java), achei um código que pode te ajudar…
usa a seguinte classe:
import java.awt.*;
import javax.swing.*;
import java.awt.print.*;
public class PrintUtilities implements Printable {
private Component componentToBePrinted;
public static void printComponent(Component c) {
new PrintUtilities(c).print();
}
public PrintUtilities(Component componentToBePrinted) {
this.componentToBePrinted = componentToBePrinted;
}
public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
if (printJob.printDialog())
try {
printJob.print();
} catch(PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
}
public static void disableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(false);
}
public static void enableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(true);
}
}
Com essa classe, você pode imprimir uma JFrame, JPanel, etc …
Para usar, é só você montar a tela (adicionar os JLabels, JTables, etc…)
e depois chamar o método print …
Segue um exemplo de uma janela que tem um método de impressão
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Main extends JFrame {
JTextField[] caixasTexto;
JLabel[] labels;
public Main() {
super("teste");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.CENTER));
setSize(400,400);
caixasTexto = new JTextField[6];
labels = new JLabel[6];
for (int i = 0; i < caixasTexto.length; i++) {
caixasTexto[i] = new JTextField(10);
labels[i] = new JLabel("testando: ");
add(labels[i]);
add(caixasTexto[i]);
}
}
public void imprimir() {
PrintUtilities pu = new PrintUtilities(this);
pu.print();
}
public static void main(String[] args) {
Main starter = new Main();
starter.setVisible(true);
}
}