Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    150

    [JAVA]Stampa di un documento

    Ciao ragazzi...
    ...ho delle difficoltà nell' implementare una classe che mi dia la possibilità di stampare il contenuto di una tabella in modo dinamico...

    Ho letto diversi articoli che parlavano della classe java.awt.print
    ma sono un pochino confuso ????...

    ...devo almeno sapere quali sono i passi fondamentali da seguire...
    ...un' esempietto...un' aiutino...ufff...

    Dovrei arrivare ad avere un' oggettino che esegue la qry che gli passo, e stampa direttamente (stampa a modulo continuo...come faccio????)...
    ...aspetto con fiducia...ciao ciao...

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    150
    ...dai ragazzi nessuna idea???

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Seguendo il tutorial java ho implementato una classe che estende la JTable ed è stampabile; ho però un inconveniente: mentre tento di lanciare la stampa il pc si impalla e il metodo print() entra in un ciclo infinito.

    Se cambio il metodo print con un altro di test invece riesco a stampare una stringa, quindi il problema non risiede nell'errata invocazione del metodo.

    Sapete come risolvere questo maledetto problema?

    Ecco il codice della classe (il metodo print è copiato direttamente dal tutorial consigliato nel post precedente):
    codice:
    import javax.swing.table.*;
    import javax.swing.*;
    
    //Per Stampa
    import java.awt.print.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.Dimension;
    
    public class ClientiJTable extends JTable implements Printable{
      public ClientiJTable(){
        TableModel dataModel = new AbstractTableModel(){
          public int getColumnCount(){
            return 5;
          }
          public int getRowCount(){
            return 100;
          }
          public Object getValueAt(int row, int col){
            return new Integer(row*col);
          }
        };
        this.setModel(dataModel);
    
        RepaintManager.currentManager(this).setDoubleBufferingEnabled(false);
      }
    
    
      public int print(Graphics g, PageFormat pageFormat,int pageIndex) throws PrinterException {
        Graphics2D  g2 = (Graphics2D) g;
        g2.setColor(Color.black);
        int fontHeight=g2.getFontMetrics().getHeight();
        int fontDesent=g2.getFontMetrics().getDescent();
    
        //leave room for page number
        double pageHeight = pageFormat.getImageableHeight()-fontHeight;
        double pageWidth = pageFormat.getImageableWidth();
        double tableWidth = (double)this.getColumnModel().getTotalColumnWidth();
        double scale = 1;
        if (tableWidth >= pageWidth) {
          scale =  pageWidth / tableWidth;
        }
    
        double headerHeightOnPage = this.getTableHeader().getHeight()*scale;
        double tableWidthOnPage = tableWidth*scale;
        double oneRowHeight = (this.getRowHeight()+this.getRowMargin())*scale;
        int numRowsOnAPage = (int)((pageHeight-headerHeightOnPage)/oneRowHeight);
        double pageHeightForTable=oneRowHeight*numRowsOnAPage;
        int totalNumPages = (int)Math.ceil(((double)this.getRowCount())/numRowsOnAPage);
        if(pageIndex>=totalNumPages) {
          return NO_SUCH_PAGE;
        }
    
        g2.translate(pageFormat.getImageableX(),pageFormat.getImageableY());
    
        //bottom center
        g2.drawString("Page: "+(pageIndex+1),(int)pageWidth/2-35,(int)(pageHeight+fontHeight-fontDesent));
        g2.translate(0f,headerHeightOnPage);
        g2.translate(0f,-pageIndex*pageHeightForTable);
    
        //If this piece of the table is smaller
        //than the size available,
        //clip to the appropriate bounds.
        if (pageIndex + 1 == totalNumPages) {
          int lastRowPrinted = numRowsOnAPage * pageIndex;
          int numRowsLeft = this.getRowCount() - lastRowPrinted;
          g2.setClip(0,(int)(pageHeightForTable * pageIndex),(int) Math.ceil(tableWidthOnPage),(int) Math.ceil(oneRowHeight*numRowsLeft));
        }
          //else clip to the entire area available.
        else{
          g2.setClip(0,(int)(pageHeightForTable*pageIndex),(int) Math.ceil(tableWidthOnPage),(int) Math.ceil(pageHeightForTable));
        }
    
        g2.scale(scale,scale);
        this.paint(g2);
        g2.scale(1/scale,1/scale);
        g2.translate(0f,pageIndex*pageHeightForTable);
        g2.translate(0f, -headerHeightOnPage);
        g2.setClip(0, 0, (int) Math.ceil(tableWidthOnPage), (int)Math.ceil(headerHeightOnPage));
        g2.scale(scale,scale);
        this.getTableHeader().paint(g2);
        //paint header at top
    
        return Printable.PAGE_EXISTS;
      }
    
       /*
      public int print(Graphics grap,PageFormat pageFormat, int pageIndex) throws PrinterException{
        if(pageIndex > 0)
          return NO_SUCH_PAGE;
        grap.drawString("Prova di stampa!", (int)pageFormat.getImageableX(),(int)pageFormat.getImageableY()+5);
        grap.setColor(Color.blue);
        grap.drawLine((int)pageFormat.getImageableX(), (int)pageFormat.getImageableY(),(int)pageFormat.getImageableWidth(),(int)pageFormat.getImageableHeight());
        return PAGE_EXISTS;
      }
      */
    }

  6. #6

    up

    Vorrei riuscire a stampare una JTable.. nessuno sa come si fa?


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.