ü*************************************************** * Class : PrintJobUse * ******************************************************/ ü Questa classe permette di provare il funzionamento * della gestione della stampa in Java. *@author Massimo Carli (MokaByte) */ import java.awt.*; // Per la gestione dell'UI import java.awt.event.*; // Per la gestione degli eventi import java.util.*; // Per le Properties public class PrintJobUse extends Frame implements ActionListener { protected Panel pan_south; // Panel che andrà a south nel Layout protected Button but_stampa; // Bottone per la stampa protected Button but_printall; // Bottone per la stampa di tutto protected Button but_newpage; // Bottone di nuova pagina protected Button but_delete; // Bottone per cancellare la TextArea protected TextArea txa_input; // TextArea di input protected boolean tutto; // Dice se stampare tutto o solo il testo protected Properties prop; // Proprietà per la stampante protected Graphics g; // Contesto da stampare // Delimitatore di pagina protected String delim_page="*********"; //protected DrawCanvas disegno; // Canvas su cui disegnare ü * Costruttore */ public PrintJobUse(){ super("PrintJobUse"); crea_interfaccia(); setSize(550,300); }// fine costruttore // Creazione dell'interfaccia grafica private final void crea_interfaccia(){ prop= new Properties(); setLayout(new BorderLayout(5,5)); pan_south = new Panel(); // Bottone per cancellare la pagina but_delete = new Button("Delete Page"); but_delete.addActionListener(this); pan_south.add(but_delete); // Bottone per stampare il contenuto della TextArea but_stampa = new Button("Print"); but_stampa.addActionListener(this); pan_south.add(but_stampa); // Bottone per stampare il tutto but_printall = new Button("Print All"); but_printall.addActionListener(this); pan_south.add(but_printall); // Bottone per stampare il tutto but_newpage = new Button("New Page"); but_newpage.addActionListener(this); pan_south.add(but_newpage); // TextArea per inserire il testo da stampare txa_input= new TextArea(); // Aggiunta pannelli add(pan_south,BorderLayout.SOUTH); add(txa_input,BorderLayout.CENTER); validate(); txa_input.setVisible(true); } // fine crea_interfaccia() private final void gestisci_stampa(){ // Dobbiamo stampare il contenuto del TextArea Toolkit tk= Toolkit.getDefaultToolkit(); // Acquisiamo il toolkit PrintJob pj= tk.getPrintJob(this," Stampa testo",prop); stampa_proprieta(prop); if (pj!=null){ // Se e' stato ritornato un PrintJob if (!tutto){ String vecchio = txa_input.getText(); // prendiamo il testo // Esaminiamo il testo e vediamo se ci sono dei delimitatori di pagina StringTokenizer pagine=new StringTokenizer(txa_input.getText(),delim_page); while (pagine.hasMoreTokens()){ g = pj.getGraphics(); // Acquisiamo una pagina txa_input.setText(pagine.nextToken()); if (g!=null){ txa_input.printAll(g); }// fine if (g!=null ) g.dispose(); } // fine while txa_input.setText(vecchio); } else { g = pj.getGraphics(); // Acquisiamo l'unica pagina if (g!=null){ printAll(g); g.dispose(); }// fine if g } pj.end(); } } // fine gestisci_stampa() private final void stampa_proprieta(Properties prop){ prop.list(System.out); } public void actionPerformed(ActionEvent ae){ Button sorg= (Button)(ae.getSource()); if (sorg.equals(but_delete)){ txa_input.setText(""); } else if (sorg.equals(but_newpage)){ txa_input.append("\n"); txa_input.append(delim_page); txa_input.append("\n"); txa_input.requestFocus(); } else{ tutto = sorg.equals(but_printall); gestisci_stampa() ; } } // fine actionPerformed() ü * Permette di mettere il Frame in centro */ public void setVisible(boolean vis){ Dimension sc=Toolkit.getDefaultToolkit().getScreenSize(); // Dim. Schermo int pos_x=((sc.width-getSize().width)/2); // Posizione x centrata int pos_y=((sc.height-getSize().height)/2); // Posizione y centrata setBounds(pos_x,pos_y,getSize().width,getSize().height); super.setVisible(vis); }// fine setVisible() public static void main(String[] str){ PrintJobUse pju= new PrintJobUse(); pju.setVisible(true); }// fine main }// fine PrintJobUse