Re: Is this program right?
smart wrote:
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();
}
}
});
}
}
--
Knute Johnson
email s/nospam/knute/
--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access