Ciao a tutti!
Ho una finestra con una JTable e sono riuscita a stamparla tranquillamente!
Il problema è che ho un altra finestra con più di una JTable, e mi stampa solo la prima!
Come fare per farle stampare tutte?
GRAZIE!
![]()
Ciao a tutti!
Ho una finestra con una JTable e sono riuscita a stamparla tranquillamente!
Il problema è che ho un altra finestra con più di una JTable, e mi stampa solo la prima!
Come fare per farle stampare tutte?
GRAZIE!
![]()
Ragazzi e urgentissimo!!
Tra pochissimi giorni devo consegnare il progetto!
AIUTATEMI VI PREGO!!!
Questa è la classe per stampare una JTable...
GRAZIE GRAZIE GRAZIEcodice: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); //TODO this next line treats the last page as a full page 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);//paint header at top return Printable.PAGE_EXISTS; } }
VI PREGO AIUTATEMI!
Sono le 2.30 e ancora non ho risolto il problema!!
E' l'unica cosa che mi manca!
Mercoledì ho l'esame!
Risolto questo problema non vi rompo più!!!
GRAZIE MILLE IN ANTICIPO A CHI MI VORRA' AIUTARE!!!
Ciao.
Io non ti so aiutare e neanche sono un moderatore, quindi non so enache se faccio abene a scrivere questo messaggio perché non so se aderisce molto bene al regolamento o se è meglio come hai fatto tu, ma trovo che sia molto dispersivo e ridondante il fatto di aprire tutti quei topic che hai aperto tu sulle jTable.... avrei trovato più efficiente l'apertura di un unico topic dove man mano potevi elencare i problemi che hai avuto con questo componente.
Ripeto: è una mia opinione personale, ma trovo molto fastidioso e "affaticante" non so come spiegartlo, il fatto di leggere che in una paginata video del forum, una metà dei topic sono scritti dalla stessa persona sullo stesso argomento e la mia reazione immediata sarebbe di chiudere e tornare domani.... credo che il fatto che non ti sia stato risposto a tutte le tue domande possa derivare anche da una reazione psicologica del genere ^________^ più che da una non-volontà di rispondere (al di là di chi come me non ne sarebbe proprio capace)... tantopiù che alcuni dei tuoi topic sono rimasti in sospeso, come quello della stampa dove alla domanda di una persona di spiegazioni maggiori sul problema non hai risposto. Lungi da me di far critiche, sia chiaro, ma credo che per te questo sia controproducente, perché in questo modo non otterrai risposte in tempo per la consegna del tuo progetto ;-)
in ogni caso non so se usi un IDE, ma se hai la possibilità di entrare in modalità debug, problemi simili potrebbero essere identificati vedendo come e in che ordine il programma esegue le istruzioni, su quali passa e su quali no e così via: un lavoro di pochi minuti ;-)
Come richiami la stampa?
Al mio segnale... scatenate l'inferno!
Richiamo così la stampa!
Grazie anche solo per l'interessamneto!
codice:StampaTabella print = new StampaTabella(table); print.Stampa(); print = null;
Ciao SHIRIM!
Ti ringrazio per i consigli e mi dispiace se in questo modo ho stancato molta gente!
Lo so che ho stressato un po' tutti...ma domani l'altro ho l'esame....è da luglio che lavoro al programma! E' il primo che faccio, perciò anche se non è difficile, per me è stato molto impegnativo!
Ho aperto tutti quei post solo perchè pensavo che affrontare molte problematiche diverse in un unico post potesse non andare bene, anche se si trattava sempre di JTable!
Pensavo che anche per gli ospiti del forum fosse più semplice capire cosa trattava il post iniziando diverse discussioni invece di fare un post solo intitolato JTable!
Comunque ho capito e MI SCUSO ANCORA con tutti!
Sono davvero amareggiata!
![]()
Ma hai eseguito un ciclo passandogli di volta in volta una table differente?
PS: sono d'accordo con te sui post multipli![]()
Al mio segnale... scatenate l'inferno!
Ho provato, ma non mi stampa niente!
La stampante prende i fogli e li restituiace solo con il numero di pagina in fondo! Non stampa altro!
GRAZIE MILLE!
Ho fatto il ciclo in questo modo:
Ma non mi ha stampato niente!codice:int numTab = TABELLE.length(); for (int i=1; i<=numTab; i++) { JTable table = (JTable)TABELLE.head(); StampaTabella print = new StampaTabella(table); print.Stampa(); print = null; TABELLE = (ListNode)TABELLE.tail(); }