import java.awt.*;
import java.awt.print.*;
import javax.swing.*;public class ClipTest {  protected JTable table;  public static void main(String[] args) {
    ClipTest ct = new ClipTest();
  }  public ClipTest() {
    table = new JTable(new SampleTableModel ());
    table.setSize(table.getPreferredSize());
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(new MyPrintable());
    try {
      job.print();
    } catch (PrinterException pe) {};
    System.exit(0);
  }  class MyPrintable implements Printable {    public int print(Graphics g, PageFormat pf, int index) {
      int positionX = (int)(pf.getImageableX());
      int positionY = (int)(pf.getImageableY());
      int width = (int)(pf.getImageableWidth());
      g.clipRect (positionX, positionY, width, 500);
      g.translate(positionX, positionY);
      int pixelIndex = index * 500;
      if (pixelIndex < table.getHeight()) {
        g.translate(0, -pixelIndex);
        table.paint(g);
        return Printable.PAGE_EXISTS;
      }
      return Printable.NO_SUCH_PAGE;
    }  }}