Visualizzazione dei risultati da 1 a 2 su 2

Hybrid View

  1. #1

    Bordo nero intorno alla stampa di una form

    Buongiorno,
    da java sto provando a stampare il contenuto di una JFrame quindi con le immagini, le etichette, i campi di testo etc. in essa contenuti.

    Per fare ciò sto usando un esempio preso dal web con il seguente codice:
    codice:
        
    public class ProvaFrm extends javax.swing.JFrame implements Printable
    ...
    
    PrinterJob job = PrinterJob.getPrinterJob();
        PageFormat format = job.defaultPage();
        format.setOrientation(PageFormat.PORTRAIT);
        job.setPrintable(this, format);
    
        try{
          if(job.printDialog()) job.print();
        } catch(Exception e){e.printStackTrace(); }

    Ho dovuto quindi fare l'Override del metodo print

    codice:
      @Override
      public int print(Graphics g, PageFormat format, int pagenum) {
        if (pagenum > 0) return Printable.NO_SUCH_PAGE;
        g.translate((int)format.getImageableX(), (int)format.getImageableY());
        float pageWidth = (float)format.getImageableWidth();
        float pageHeight = (float)format.getImageableHeight();
        float imageHeight = (float)this.getHeight();
        float imageWidth = (float)this.getWidth();
        float scaleFactor = Math.min((float)pageWidth/(float)imageWidth, (float)pageHeight/(float)imageHeight);
        int scaledWidth = (int)(((float)imageWidth)*scaleFactor);
        int scaledHeight = (int)(((float)imageHeight)*scaleFactor);  
    
        BufferedImage canvas = new BufferedImage( this.getWidth(),  this.getHeight(), BufferedImage.TYPE_INT_RGB);
        Graphics2D gg = canvas.createGraphics();
        this.paint( gg );  
        Image img = canvas ;
        g.drawImage(img, 0, 0, scaledWidth, scaledHeight, null );
        return Printable.PAGE_EXISTS;
      }

    Ora il problema è che la stampa la fa, sia su carta che su file, ma con un bordo nero tutto intorno (come da esempio del file allegato), e non riesco a capire come eliminarlo.

    Qualcuno gentilmente riuscirebbe ad aiutarmi?
    Immagini allegate Immagini allegate
    www.positivamente.it - Soluzioni per vivere meglio

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Zio Crick Visualizza il messaggio
    Buongiorno,
    Ora il problema è che la stampa la fa, sia su carta che su file, ma con un bordo nero tutto intorno (come da esempio del file allegato), e non riesco a capire come eliminarlo.
    Ho provato il codice postato su un Windows 10 e in effetti anche a me vengono fuori i bordi neri. Ma quella parte nera, attenzione, dovrebbe contenere le "decorazioni" della finestra (bordi, barra titolo ecc...)!

    Tempo fa (vari anni fa) avevo scritto un esempio di stampa di JFrame ma non ricordo dove l'avevo postato, se qui o su altro forum. Comunque mi ricordo bene che su un Windows 7 (non il 10!) "stampava" perfettamente il JFrame con tutte le decorazioni.
    Tieni sempre presente che il contenuto del JFrame (content pane ecc..) se usa tutti componenti Swing è tutto disegnato in puro Java. Ma le decorazioni delle finestre vengono sempre disegnate con codice nativo dal SO, non da Java.
    Non vorrei che .... le cose sono cambiate perlomeno dopo il Win 7.

    Se hai modo di fare una prova su Windows 7, verifica. Nei prossimi giorni appena posso ricerco quel demo che avevo scritto e provo.


    EDIT: l'ho ritrovato! L'avevo postato qui: https://forum.html.it/forum/showthre...1#post11403858
    Ultima modifica di andbin; 18-08-2022 a 22:39
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.