7 lipca 2010

Drukowanie komponentów jTable w Javie

Z pewnością większość deweloperów zastanawia się jak, w prosty sposób przygotować i wydrukować komponent JTable dostępny w bibliotece Swing. Z pomocą przychodzi metoda print() dostępna w javax.swing.JTable. Metoda print() przygotowuje tabele do druku, pobiera dane i wysyła je do drukarki. Jeżeli proces drukowania przebiegnie poprawnie metoda zwróci wartość typu boolean true lub false, jeśli użytkownik przerwie drukowanie.

Przykład komponentu jTable:


Metoda print() w najprostszej postaci występuje w formie bezparametrowej oraz rozbudowanej, kiedy przyjmuje kilka parametrów. Dziś przedstawię prosty i użyteczny sposób wykorzystania metody.

a) jTable1.print();
Metoda drukuje tabelę i wyświetla okno dialogowe drukowania.
Przy implementacji należy pamiętać o wyjątkach: SecurityException, PrinterException.

try {
    Table1.print();
    }
catch (Exception e) {
     System.err.println(e);
    }


b) jTable1.print(PrintMode printMode);
Metoda drukuje tabelę i wyświetla okno dialogowe drukowania.

Parametr printMode określa tryb drukowania i przyjmuje dwie wartości:
- PrintMode.FIT_WIDTH – automatyczne skalowanie tabeli w celu dopasowania szerokości,
- PrintMode.NORMAL – drukowanie aktualnego rozmiaru, w razie potrzeby następuje rozkład tabeli na wiele stron, zarówno kolumn jak i wierszy.
Przy implementacji należy pamiętać o wyjątkach: SecurityException, PrinterException.

try {
    jTable1.print(PrintMode.NORMAL);
    }
catch (Exception e) {
     System.err.println(e);
    }


c) jTable1.print(PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat);
Metoda drukuje tabelę i wyświetla okno dialogowe drukowania, jak w punkcie b), dodatkowo określa nagłówek i stopkę dokumentu.

Parametr headerFormat określa nagłówek dokumentu, może przyjąć następujące wartości:
null – drukuj bez nagłówka,
new MessageFormat(„Mój nagłówek”) – wyświetli nagłówek dokumentu.

Parametr footerFormat określa stopkę dokumentu, może przyjąć następujące wartości:
null – drukuj bez stopki,
new MessageFormat(„Moja stopka”) – wyświetli stopkę dokumentu.
Aby w łatwy sposób ponumerować strony w dokumentach, można zastosować następujące rozwiązanie:
new MessageFormat(„Strona nr: {0}”)
Przy implementacji należy pamiętać o wyjątkach: SecurityException, PrinterException.

try {
    jTable1.print(PrintMode.FIT_WIDTH, new MessageFormat("Języki programowania"), new MessageFormat("Stopka str. nr: {0}"));
    }
catch (Exception e) {
     System.err.println(e);
    }

Przykład wydruku tabeli za pomocą powyższego kodu:



d) jTable1.print(PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintRequestAttributeSet attr, boolean interactive);
Metoda drukuje tabelę w ściśle określony sposób, jak w punkcie c), rozszerzając o dodatkowe atrybuty drukowania.

Parametr showPrintDialog odpowiada za wyświetlenie okna dialogowego drukowania:
true – wyświetl okno,
false – nie wyświetlaj okna.

Parametr attr określa dodatkowe atrybuty drukowania na podstawie klasy HashPrintRequestAttributeSet np. orientacje wydruku, rozmiar papieru itd., wartość null oznacza, że metoda nie przyjmuje żadnych dodatkowych atrybutów.

Parametr interactive ustawia, czy drukowanie ma się odbyć w trybie interaktywnym, wartość true – tryb interaktywny, false – bez trybu interaktywnego.

Przy implementacji należy pamiętać o wyjątkach: SecurityException, PrinterException, HeadlessException.

try{
    javax.print.attribute.PrintRequestAttributeSet attr=new javax.print.attribute.HashPrintRequestAttributeSet();
    attr.add(javax.print.attribute.standard.OrientationRequested.PORTRAIT);
    jTable1.print(PrintMode.NORMAL, new MessageFormat("Tytuł"), new MessageFormat("stopka"), false, attr, true);
    }
catch (Exception e) {
     System.err.println(e);
    }

Przykład okna dialogowego drukowania:



A na zakończenie przykład programu wykorzystujący wszystkie metody zawarte w tym artykule. Program został zrealizowany w środowisku programistycznym NetBeans IDE 6.9.
print.java

Nie ponoszę odpowiedzialności za błędy i następstwa powstałe wskutek działania programu i kodu. Pobierasz i użytkujesz na własną odpowiedzialność.