< prev index next >

src/java.desktop/share/classes/javax/swing/TablePrintable.java

Print this page

        

*** 203,217 **** * NO_SUCH_PAGE if a non-existent page index is specified * @throws PrinterException if an error causes printing to be aborted */ public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { - // for easy access to these values final int imgWidth = (int)pageFormat.getImageableWidth(); final int imgHeight = (int)pageFormat.getImageableHeight(); - if (imgWidth <= 0) { throw new PrinterException("Width of printable area is too small."); } // to pass the page number when formatting the header and footer text --- 203,215 ----
*** 300,313 **** // rather than multiplying every row and column by the scale factor // in findNextClip, just pass a width and height that have already // been divided by it int scaledWidth = (int)(imgWidth / sf); int scaledHeight = (int)((availableSpace - hclip.height) / sf); - // calculate the area of the table to be printed for this page findNextClip(scaledWidth, scaledHeight); last++; } // create a copy of the graphics so we don't affect the one given to us Graphics2D g2d = (Graphics2D)graphics.create(); --- 298,313 ---- // rather than multiplying every row and column by the scale factor // in findNextClip, just pass a width and height that have already // been divided by it int scaledWidth = (int)(imgWidth / sf); int scaledHeight = (int)((availableSpace - hclip.height) / sf); // calculate the area of the table to be printed for this page findNextClip(scaledWidth, scaledHeight); + if (!((table.getBounds()).intersects(clip))) { + return NO_SUCH_PAGE; + } last++; } // create a copy of the graphics so we don't affect the one given to us Graphics2D g2d = (Graphics2D)graphics.create();
*** 341,351 **** tempRect.x = 0; tempRect.y = 0; tempRect.width = imgWidth; tempRect.height = availableSpace; g2d.clip(tempRect); - // if we have a scale factor, scale the graphics object to fit // the entire width if (sf != 1.0D) { g2d.scale(sf, sf); --- 341,350 ----
*** 387,397 **** g2d.setTransform(oldTrans); g2d.setClip(oldClip); // draw a box around the table g2d.setColor(Color.BLACK); ! g2d.drawRect(0, 0, clip.width, hclip.height + clip.height); // dispose the graphics copy g2d.dispose(); return PAGE_EXISTS; --- 386,415 ---- g2d.setTransform(oldTrans); g2d.setClip(oldClip); // draw a box around the table g2d.setColor(Color.BLACK); ! ! // compute the visible portion of table and draw the rect around it ! Rectangle visibleBounds = clip.intersection(table.getBounds()); ! Point upperLeft = visibleBounds.getLocation(); ! Point lowerRight = new Point(visibleBounds.x + visibleBounds.width, ! visibleBounds.y + visibleBounds.height); ! ! int rMin = table.rowAtPoint(upperLeft); ! int rMax = table.rowAtPoint(lowerRight); ! if (rMin == -1) { ! rMin = 0; ! } ! if (rMax == -1) { ! rMax = table.getRowCount(); ! } ! int rowHeight = 0; ! for(int visrow = rMin; visrow < rMax; visrow++) { ! rowHeight += table.getRowHeight(visrow); ! } ! g2d.drawRect(0, 0, visibleBounds.width, hclip.height + rowHeight); // dispose the graphics copy g2d.dispose(); return PAGE_EXISTS;
*** 507,517 **** } if (++col >= colCount) { // reset col to 0 to indicate we're finished all columns col = 0; - break; } colWidth = colModel.getColumn(col).getWidth(); } while (clip.width + colWidth <= pw); --- 525,534 ----
< prev index next >