Oppure

Loading
07/10/09 18:47
Il_maca
Salve, sono alle prese con la stampa in java, ho letto il tutorials di Netarrow :
pierotofy.it/pages/guide_tutorials/Java/Stampa_con_Java/
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:


import java.awt.print.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.UnsupportedLookAndFeelException;

public class Stamp implements Printable {

public void stamp() throws Exception{
  PrinterJob pj = PrinterJob.getPrinterJob();
  pj.setJobName("Biografia");
  pj.printDialog();
  pj.setPrintable(this);
  pj.print();
}

public int print(Graphics grap,PageFormat pageFormat, int pageIndex) throws PrinterException{
if(pageIndex > 0) return NO_SUCH_PAGE;
        try {
            Bio bio = new Bio();
            grap.drawImage(bio.i, (int)pageFormat.getImageableX(),(int)pageFormat.getImageableY()+10,null);
            grap.drawString(bio.t, (int)pageFormat.getImageableX(),(int)pageFormat.getImageableY()+10);

        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(Stamp.class.getName()).log(Level.SEVERE, null, ex);
        }
return PAGE_EXISTS;
}
}


Solo che nell'esecuzione mi da questi errori:
7-ott-2009 20.45.10 Bio StampaActionPerformed
GRAVE: null
java.lang.NullPointerException
        at sun.print.PeekGraphics.drawString(PeekGraphics.java:843)
        at Stamp.print(Stamp.java:22)
        at sun.print.RasterPrinterJob.printPage(RasterPrinterJob.java:1936)
        at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1431)
        at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1247)
        at Stamp.stamp(Stamp.java:14)
        at Bio.StampaActionPerformed(Bio.java:289)
        at Bio.access0(Bio.java:25)
        at Bio.actionPerformed(Bio.java:220)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        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 07/10/09 18:48
aaa
07/10/09 19:16
Il_maca
RETTIFICO:
in realtà la variabile, seppure viene riempita correttamente, viene passata con il valore di inizializzazione:



 private void NuovoActionPerformed(java.awt.event.ActionEvent evt) {                                      
       New_Bio b=new New_Bio(null,true);
       b.setVisible(true);
       if (b.ok==true){
       schermata.setVisible(true);
       intestazione.setText(setinfo(b.nome())+" "+setinfo(b.cognome()));
       i=java.awt.Toolkit.getDefaultToolkit().getImage(b.immagine());
       i=i.getScaledInstance(NEW_W,NEW_H,Image.SCALE_DEFAULT);
       this.immagine.setIcon(new javax.swing.ImageIcon(i));
            try {
                txt.scrivi_bio(biografia, b.testo());
                t=biografia.getText();
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Bio.class.getName()).log(Level.SEVERE, null, ex);
            }
       attiva(true);
       }
    }

    boolean enable=false;
    public static final int NEW_W=480;
    public static final int NEW_H=400;
    Gestione_txt txt=new Gestione_txt();
    Stamp stampa=new Stamp();
    boolean ispresent=false;
    Image i;
    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
aaa
07/10/09 20:49
pierotofy
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: piero.dev
08/10/09 17:37
Il_maca
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 08/10/09 18:43
aaa
08/10/09 18:46
Il_maca
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
aaa