Is this program right?

S

smart

JMenuItem menuFilePrint = new JMenuItem("Print");
menuFile.add(menuFilePrint);
menuFilePrint.addActionListener(addHandlerPrint);
menuFilePrint.setMnemonic('r');


ActionListener addHandlerPrint = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand ();

if (command.equals ("Print"))
{
print ();

}

} // end of actionperformed of Print

}; // end of ActionListener of Print


public void print ()
{


// Create the PrintJob object
PrintJob pjb = getToolkit ().getPrintJob (this,"Print Test",
null);

if (pjb != null)
{
Graphics pg = pjb.getGraphics ();

if (pg != null)
{

paint (pg);// Paint all components on the frame

pg.dispose (); // flush page
}

pjb.end (); // close print job




} // end of the if condition of pjb

} // print




Please help me when i press print button in menu. I have include any
drivers in my prg

Thanks
 
K

Knute Johnson

smart said:
JMenuItem menuFilePrint = new JMenuItem("Print");
menuFile.add(menuFilePrint);
menuFilePrint.addActionListener(addHandlerPrint);
menuFilePrint.setMnemonic('r');


ActionListener addHandlerPrint = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand ();

if (command.equals ("Print"))
{
print ();

}

} // end of actionperformed of Print

}; // end of ActionListener of Print


public void print ()
{


// Create the PrintJob object
PrintJob pjb = getToolkit ().getPrintJob (this,"Print Test",
null);

if (pjb != null)
{
Graphics pg = pjb.getGraphics ();

if (pg != null)
{

paint (pg);// Paint all components on the frame

pg.dispose (); // flush page
}

pjb.end (); // close print job




} // end of the if condition of pjb

} // print




Please help me when i press print button in menu. I have include any
drivers in my prg

Thanks

I haven't used the PrintJob in a long time. I use the PrinterJob now.
Below is a sample code to draw an image with that method. Just edit the
image file name to something you have.

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.print.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class test extends JPanel implements Printable {
final BufferedImage bi;
final int w,h;
volatile static PageFormat pf;

public test() throws IOException {
bi = ImageIO.read(new File("kittens.jpg"));
w = bi.getWidth();
h = bi.getHeight();
setPreferredSize(new Dimension(w,h));
}

void render(Graphics g, boolean printerFlag) {
if (printerFlag) {
double aspect = (double)w / h;
g.drawImage(bi,
(int)pf.getImageableX(),
(int)pf.getImageableY(),
(int)pf.getImageableWidth(),
(int)(pf.getImageableWidth()/aspect),null);
} else
g.drawImage(bi,0,0,w,h,null);
}

public void paintComponent(Graphics g) {
render(g, false);
}

public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
int retcod = Printable.PAGE_EXISTS;
if (pageIndex == 0) {
pf = pageFormat;
render(g, true);
} else
retcod = Printable.NO_SUCH_PAGE;

return retcod;
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JFrame f = new JFrame("test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final test t = new test();
f.add(t,BorderLayout.CENTER);
JButton b = new JButton("Print");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(t);
// pf = pj.pageDialog(pj.defaultPage());
if (pj.printDialog()) {
try {
pj.print();
} catch (PrinterException pe) {
pe.printStackTrace();
}
}
}
});
f.add(b,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
});
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
SterlingLa
Top