try {
text.print();
} catch (PrinterException ex) {
}replace with:PrinterJob printJob = PrinterJob.getPrinterJob();now awt component will print without showing print dialog.
class Job implements Printable {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) graphics;
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
text.paint(graphics);
return Printable.PAGE_EXISTS;
}
}
printJob.setPrintable(new Job());
try {
printJob.print();
} catch (Exception ex) {
}
Conclusion:
We can directly print Printable using PrinterJob.print();
Complete Source Code:
/*
* PrintingTextOnJTextArea.java
*
* Created on 17 Juli 2008, 14:07
*/
package org.kazao.tips.tip019;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
/**
*
* @author Vanya Terra Ardani
*/
public class PrintingTextOnJTextAreaWithoutPrintDialog extends javax.swing.JFrame {
/** Creates new form PrintingTextOnJTextArea */
public PrintingTextOnJTextAreaWithoutPrintDialog() {
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")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
text = new javax.swing.JTextArea();
buttonPrint = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Printing JTextArea componen");
scroller.setName("scroller"); // NOI18N
text.setFont(new java.awt.Font("Courier New", 0, 13));
text.setText("Item Qty Price Sub Total\n==================================================\nShampo Sunsilk 100ml 10 10.500,00 105.000,00\nHead&Shoulder 150ml 5 12.750,00 63.750,00\nRinso Warna 2kg 1 18.200,00 18.200,00\nCoca-cola Zero 1500 10 6.700,00 67.000,00\n==================================================\nTotal: 253.950,00");
text.setName("text"); // NOI18N
scroller.setViewportView(text);
buttonPrint.setText("Print");
buttonPrint.setName("buttonPrint"); // NOI18N
buttonPrint.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonPrintActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(buttonPrint))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPrint)
.addContainerGap())
);
pack();
}//
private void buttonPrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPrintActionPerformed
PrinterJob printJob = PrinterJob.getPrinterJob();
class Job implements Printable {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) graphics;
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
text.paint(graphics);
return Printable.PAGE_EXISTS;
}
}
printJob.setPrintable(new Job());
try {
printJob.print();
} catch (Exception ex) {
ex.printStackTrace();
}
}//GEN-LAST:event_buttonPrintActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PrintingTextOnJTextAreaWithoutPrintDialog().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JButton buttonPrint;
public javax.swing.JScrollPane scroller;
public javax.swing.JTextArea text;
// End of variables declaration//GEN-END:variables
}

0 komentar:
Post a Comment