f



Is this program right?

      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         }   // printPlease help me when i press print button in menu. I have include anydrivers in my prgThanks
0
smart
1/21/2008 5:02:10 AM
comp.lang.java.programmer 52711 articles. 1 followers. Post Follow

1 Replies
454 Views

Similar Articles

[PageSpeed] 57

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
0
Knute
1/21/2008 7:06:36 AM
Reply: