import java.awt.*;
import java.awt.event.*;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.*;
import java.util.*;
import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.*;public class Menu extends JFrame
{
private static final int DEFAULT_WIDTH = 485;
private static final int DEFAULT_HEIGHT = 683;
private String fileName;

Printable canvas = new PrintTS();
PrinterJob job = PrinterJob.getPrinterJob();
HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();




private TextArea testArea = new TextArea();
        private JMenuBar menuBar = new JMenuBar();
        private JMenuItem openItem = new JMenuItem("Open");
        private JMenuItem printItem = new JMenuItem("Print");
        
    private PrintService currentService; public Menu()
{
      setTitle("PrintTest");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
      setLayout(null);
      setResizable(false);
             testArea.setBounds(0, 50, 480, 578);
      testArea.setEditable(true);
      add(testArea);
             setJMenuBar(menuBar);
      JMenu menu = new JMenu("File");
      menuBar.add(menu);
      
      
      menu.add(printItem);
      printItem.addActionListener(new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
             job.setPrintable(canvas);             
                printFile();
               
            }
         });
      
}
      
  public void printFile()
   {
  if(job.printDialog(attributes))
  {
   try
   {
   job.print();
   }
  
   catch(PrinterException e)
   {
  
   }
  }
   }
}import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;public class PrintTS implements Printable
{ public int print(Graphics arg0, PageFormat arg1, int arg2) throws PrinterException 
{
return 0;
}}
import javax.swing.JFrame;public class Main { public static void main(String[] args) 
{
      JFrame frame = new Menu();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
}
}
各位帮忙看看哪里的问题~我就在TextArea里打了3个字母进去居然要打21817张~!(图片暂时传不上来)而且打印机只走纸~什么夜没打~什么状况啊~?!

解决方案 »

  1.   

    是不是加上我注释的那两句就好了  你看看public Menu()
        {
              setTitle("PrintTest");
              setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
              setLayout(null);
              setResizable(false);
                        testArea.setBounds(0, 50, 480, 578);
              testArea.setEditable(true);
              add(testArea);
                        setJMenuBar(menuBar);
              JMenu menu = new JMenu("File");
              menuBar.add(menu);
              
              
              menu.add(printItem);
              printItem.addActionListener(new ActionListener()
                 {
                    public void actionPerformed(ActionEvent event)
                    {
                        job.setPrintable(canvas);                    
                        printFile();
                       
                    }
                 });           setSize(500, 600);//具体大小  我不清楚
               setVisible(true);//
              
        }
      

  2.   


    Printable canvas = new PrintTS();
    public class PrintTS implements Printable
    {    public int print(Graphics arg0, PageFormat arg1, int arg2) throws PrinterException 
        {
            return 0;
        }

    }