Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13
  1. #11
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Non riesco a risolvere il problema...eppure dovrebbe essere una cosa simile alla precedente...!
    O no?
    Creo una JTable per ogni tabella presente nella ListNode TABELLE...e la assegno al pannello!
    Perchè allora mi visualizza solo la prima?

  2. #12
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Altra cosa...!
    Ho questa classe per stampare una JTable:
    codice:
    import javax.swing.*;
    import javax.swing.table.*;
    
    import java.awt.print.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.Dimension;
    
    public class StampaTabella implements Printable {
    
      JFrame frame;
      JTable tableView;
    
      public StampaTabella(JTable Tabella) {
      	tableView = Tabella;
      }
    
    	public void Stampa() {
    	  PrinterJob pj=PrinterJob.getPrinterJob();
    		pj.setPrintable(StampaTabella.this);
    		pj.printDialog();
    		try{
    		    pj.print();
    		}
    		catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    
      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)tableView.getColumnModel().getTotalColumnWidth();
    		double scale = 1;
    		if (tableWidth >= pageWidth) {
    			scale =  pageWidth / tableWidth;
    		}
    		double headerHeightOnPage = tableView.getTableHeader().getHeight() * scale;
    		double tableWidthOnPage = tableWidth * scale;
    		double oneRowHeight = (tableView.getRowHeight() + tableView.getRowMargin()) * scale;
    		int numRowsOnAPage = (int)((pageHeight - headerHeightOnPage) / oneRowHeight);
    		double pageHeightForTable = oneRowHeight * numRowsOnAPage;
    		int totalNumPages= (int)Math.ceil(((double)tableView.getRowCount()) / numRowsOnAPage);
    		if(pageIndex>=totalNumPages) {
    			return NO_SUCH_PAGE;
    		}
    		g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    		g2.drawString("Page: "+(pageIndex+1),(int)pageWidth/2-35,
    		    (int)(pageHeight+fontHeight-fontDesent));//bottom center
    
    		g2.translate(0f,headerHeightOnPage);
    		g2.translate(0f,-pageIndex*pageHeightForTable);
    		g2.setClip(0, (int)(pageHeightForTable*pageIndex),(int)
    		    Math.ceil(tableWidthOnPage),
    		    (int) Math.ceil(pageHeightForTable));
    
    		g2.scale(scale,scale);
    		tableView.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);
    		tableView.getTableHeader().paint(g2);
    		return Printable.PAGE_EXISTS;
    	}
    
    }
    Ma se ho una finestra con più di una JTable....devo modificare questa classe??
    Questa ne stampa solo una, no?
    GRAZIE MILLE!

  3. #13
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Nessuno può darmi una mano?
    Lo so che vi ho scocciato molto in questi giorni...ma sono le ultime cose che devo sistemare...tra 4 giorni devo consegnare il progetto!
    Se qualcuno mi aiuta ancora gliene sono infinitamente grata!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.