Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - stampare in java
Forum - Java - stampare in java

Avatar
Il_maca (Ex-Member)
Pro


Messaggi: 163
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:47
Mercoledì, 07/10/2009
Salve, sono alle prese con la stampa in java, ho letto il tutorials di Netarrow :
http://www.pierotofy.it/pages/guide_tutorials/Java/Stampa_ ...
e l'ho usato in una classe! il tutto funziona, però per le mie esigenze ho dei problemi!
Vi spiego: devo stampare un'immagine e un testo presenti in una classe come variabili Image e String; li ho importai poi in questo modo:


Codice sorgente - presumibilmente Java

  1. import java.awt.print.*;
  2. import java.awt.*;
  3. import java.util.logging.Level;
  4. import java.util.logging.Logger;
  5. import javax.swing.UnsupportedLookAndFeelException;
  6.  
  7. public class Stamp implements Printable {
  8.  
  9. public void stamp() throws Exception{
  10.   PrinterJob pj = PrinterJob.getPrinterJob();
  11.   pj.setJobName("Biografia");
  12.   pj.printDialog();
  13.   pj.setPrintable(this);
  14.   pj.print();
  15. }
  16.  
  17. public int print(Graphics grap,PageFormat pageFormat, int pageIndex) throws PrinterException{
  18. if(pageIndex > 0) return NO_SUCH_PAGE;
  19.         try {
  20.             Bio bio = new Bio();
  21.             grap.drawImage(bio.i, (int)pageFormat.getImageableX(),(int)pageFormat.getImageableY()+10,null);
  22.             grap.drawString(bio.t, (int)pageFormat.getImageableX(),(int)pageFormat.getImageableY()+10);
  23.  
  24.         } catch (UnsupportedLookAndFeelException ex) {
  25.             Logger.getLogger(Stamp.class.getName()).log(Level.SEVERE, null, ex);
  26.         }
  27. return PAGE_EXISTS;
  28. }
  29. }



Solo che nell'esecuzione mi da questi errori:
Codice sorgente - presumibilmente Delphi

  1. 7-ott-2009 20.45.10 Bio StampaActionPerformed
  2. GRAVE: null
  3. java.lang.NullPointerException
  4.         at sun.print.PeekGraphics.drawString(PeekGraphics.java:843)
  5.         at Stamp.print(Stamp.java:22)
  6.         at sun.print.RasterPrinterJob.printPage(RasterPrinterJob.java:1936)
  7.         at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1431)
  8.         at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1247)
  9.         at Stamp.stamp(Stamp.java:14)
  10.         at Bio.StampaActionPerformed(Bio.java:289)
  11.         at Bio.access$100(Bio.java:25)
  12.         at Bio$2.actionPerformed(Bio.java:220)
  13.         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
  14.         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
  15.         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
  16.         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
  17.         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
  18.         at java.awt.Component.processMouseEvent(Component.java:6263)
  19.         at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
  20.         at java.awt.Component.processEvent(Component.java:6028)
  21.         at java.awt.Container.processEvent(Container.java:2041)
  22.         at java.awt.Component.dispatchEventImpl(Component.java:4630)
  23.         at java.awt.Container.dispatchEventImpl(Container.java:2099)
  24.         at java.awt.Component.dispatchEvent(Component.java:4460)
  25.         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
  26.         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
  27.         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
  28.         at java.awt.Container.dispatchEventImpl(Container.java:2085)
  29.         at java.awt.Window.dispatchEventImpl(Window.java:2475)
  30.         at java.awt.Component.dispatchEvent(Component.java:4460)
  31.         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
  32.         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
  33.         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
  34.         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
  35.         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
  36.         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
  37.         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


ma non capisco cosa possa essere! cioè indica che la variabile è vuota! ma non è così!! la mando a video e c'è tutto il testo....
aiutatemi vi prego!

P.S. l'immagine viene stampata correttamente...

Ultima modifica effettuata da Il_maca il 07/10/2009 alle 20:48
PM Quote
Avatar
Il_maca (Ex-Member)
Pro


Messaggi: 163
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:16
Mercoledì, 07/10/2009
RETTIFICO:
in realtà la variabile, seppure viene riempita correttamente, viene passata con il valore di inizializzazione:


Codice sorgente - presumibilmente Java

  1. private void NuovoActionPerformed(java.awt.event.ActionEvent evt) {                                      
  2.        New_Bio b=new New_Bio(null,true);
  3.        b.setVisible(true);
  4.        if (b.ok==true){
  5.        schermata.setVisible(true);
  6.        intestazione.setText(setinfo(b.nome())+" "+setinfo(b.cognome()));
  7.        i=java.awt.Toolkit.getDefaultToolkit().getImage(b.immagine());
  8.        i=i.getScaledInstance(NEW_W,NEW_H,Image.SCALE_DEFAULT);
  9.        this.immagine.setIcon(new javax.swing.ImageIcon(i));
  10.             try {
  11.                 txt.scrivi_bio(biografia, b.testo());
  12.                 t=biografia.getText();
  13.             } catch (FileNotFoundException ex) {
  14.                 Logger.getLogger(Bio.class.getName()).log(Level.SEVERE, null, ex);
  15.             }
  16.        attiva(true);
  17.        }
  18.     }
  19.  
  20.     boolean enable=false;
  21.     public static final int NEW_W=480;
  22.     public static final int NEW_H=400;
  23.     Gestione_txt txt=new Gestione_txt();
  24.     Stamp stampa=new Stamp();
  25.     boolean ispresent=false;
  26.     Image i;
  27.     String t=" ";



Non posso postare il codice intero visto che programmo con l'ide Net Beans e ci vorrebbero troppe righe!! comunque per maggiori chiarimenti non esitate a chiedere

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:49
Mercoledì, 07/10/2009
Comprimilo in un .zip e allegalo... non avrai scritto piu' di 2 mb di codice vero (non includendo le risorse e i file di progetto ovviamente..)?


Il mio blog: https://piero.dev
PM Quote
Avatar
Il_maca (Ex-Member)
Pro


Messaggi: 163
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:37
Giovedì, 08/10/2009
in pratica, dopo dei test più approfonditi mi sono accorto che nonostante aggiornassi le variabili bio.i e bio.t! probabilmente sbaglio qualcosa nell'importazione!!
penso sia dovuto al fatto che creo una nuova istanza della classe Bio.java! dovrei poter prendere i valori senza istanziarla nuovamente (visto che Bio.java e la main class)!! ma non so come!

Ultima modifica effettuata da Il_maca il 08/10/2009 alle 20:43
PM Quote
Avatar
Il_maca (Ex-Member)
Pro


Messaggi: 163
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:46
Giovedì, 08/10/2009
ok ho risolto tutto! erano delle vere sciocchezze. ora funziona quasi alla perfezione! un' ultima cosa e poi non rompo più :rofl::rofl:!
ho notato che con il metodo draw string i caratteri di escape \n non funzionano; ora come posso fare in modo per wrappare la stringa? esiste qualkosa di semplkice o devo scervellarmi e creare tanti draw string quante sono le righe? (e sono tante...:()!
attendo risposte! grazie

PM Quote