Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Dimensione MessageFormat header/footer stampa tabella

    Salve raga

    ho bisogno di stampare delle tabelle con tanto di messaggio in alto ed in basso, e fin qui nessun problema...
    Il codice utilizzato è il seguente

    codice:
    final MessageFormat headerFormat = new MessageFormat("messaggio");
    final MessageFormat footerFormat = new MessageFormat("- {0} -");
            
    PrintRequestAttributeSet set = new HashPrintRequestAttributeSet();
    set.add(OrientationRequested.LANDSCAPE);
    
    try {
        tabella.print(PrintMode.FIT_WIDTH, headerFormat, footerFormat, true, set, false);
    } catch (PrinterException ex) {
        Logger.getLogger(x_tabella.class.getName()).log(Level.SEVERE, null, ex);
    }
    Il problema sta nella dimensione del MessageFormat che è eccessiva e vorrei intervenire su questo font...
    In che modo?

    Thanks

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Dimensione MessageFormat header/footer stampa tabella

    Originariamente inviato da Fire Fox II
    Il problema sta nella dimensione del MessageFormat che è eccessiva e vorrei intervenire su questo font...
    In che modo?
    Ti dò una brutta notizia .... mi risulta che non si può cambiare. E ti spiego anche il perché.

    Ho analizzato il sorgente di JTable. Esso ha svariati metodi print, tutti alla fin fine fanno invocare il print quello che ha il maggior numero di parametri. Questo print all'interno usa il getPrintable che è il metodo di JTable che fornisce il Printable che viene poi assegnato al job di stampa.

    Il getPrintable di JTable restituisce una implementazione specifica che è TablePrintable, è una classe in javax.swing che però è package-level (non è visibile al resto del mondo!). Guardando il sorgente di TablePrintable ci ho trovato, nel costruttore:

    codice:
            // derive the header and footer font from the table's font
            headerFont = table.getFont().deriveFont(Font.BOLD,
                                                    HEADER_FONT_SIZE);
            footerFont = table.getFont().deriveFont(Font.PLAIN,
                                                    FOOTER_FONT_SIZE);
    Il font base è quello della tabella ma viene "derivato" per forzare style/size. HEADER_FONT_SIZE vale 18.0f e FOOTER_FONT_SIZE vale 12.0f.
    E non mi risulta ci siano dei "setter" per quei campi headerFont/footerFont che peraltro sono private.

    Certo .. si potrebbe provare ad accederci con la reflection ma dovresti invocare tu il getPrintable, ottenere il Printable, tentare il cambiamento e poi assegnarlo tu al job, ecc...
    Non so se ne vale la pena ....

    O accetti i font come sono oppure implementi tu un apposito Printable (farlo da zero non è banale ... a meno che scopiazzi dal sorgente di TablePrintable) o ancora cerchi in rete una implementazione pubblica/valida più flessibile o un altro modo per stampare JTable.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    E' una pessima notizia...

    Ti ringrazio comunque per l'aiuto e seguirò il tuo suggerimento, ovvero spulciare in rete in cerca di qualcosa, altrimenti provvedo con qualche alternativa...

    thanks

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