/* Class : PrintTextArea
* Questa classe permette di provare il funzionamento della gestione della stampa del testo di una JTextArea
* in Java con possibilità di settarne le impostazioni
*/
import java.awt.*;
import java.awt.print.*;
import javax.print.attribute.*;
// per la stampa
// per scegliere le impostazioni di stampa
import java.awt.event.*;
import javax.swing.*;
public class PrintTextArea implements Printable, ActionListener {
protected
protected
protected
protected
JFrame
JScrollPane
JButton
JTextArea
f;
pan;
but_stampa;
txa_input;
// Bottone per la stampa in posizione sud
// TextArea di input
public PrintTextArea(){
crea_interfaccia();
}// fine costruttore
// costruttore
private final void crea_interfaccia(){
// creazione dell'interfaccia grafica
f = new JFrame("Stampa di una TextArea");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
txa_input = new JTextArea(50, 20);
int Max= 43;
// unica pagina
for (int i=1;i<=Max;i++) {
txa_input.append("Line " + i + "\n");
}
pan = new JScrollPane(txa_input);
pan.setPreferredSize(new Dimension(250,200));
f.add("Center", pan);
but_stampa = new JButton("Print");
but_stampa.addActionListener(this);
f.add("South", but_stampa);
f.pack();
f.setVisible(true);
} // fine crea_interfaccia()
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0)
return NO_SUCH_PAGE;
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
txa_input.print(g);
return PAGE_EXISTS;
}// fine metodo dell’interfaccia Printable
// stampa del contenuto del TextArea
// con corretta gestione dell’ “a capo”
private void gestisci_stampa(){
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
boolean ok = job.printDialog(aset);
if(ok) {
try {
job.print(aset);
} catch (PrinterException ex) { }
}
} // fine gestisci_stampa()
public void actionPerformed(ActionEvent e){
gestisci_stampa();
} // fine actionPerformed()
public static void main(String[] str){
new PrintTextArea();
}// fine main
}// fine classe
nb: per scegliere L&F
try {
String cn = UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(cn);
// L&F nativo
} catch (Exception cnf) {}