Problem z drukowaniem

0

Witajcie.
Proszę o pomoc. Mam napisany program z zakładkami JPanel zakladka1. Chciałbym aby po nacisnieciu przycisku wydrukowało mi panel3. Poniżej przesyłam kod do drukowania.

public void startPrint() {
JOptionPane.showMessageDialog(null,"Start","Hey!",JOptionPane.ERROR_MESSAGE);

      druk=PrinterJob.getPrinterJob();

      numPages = 1;
      
      druk.setCopies(1);
      druk.setPrintable(this);*zmieniłem było this*
      if (druk.printDialog())
      {
         try
         {
 JOptionPane.showMessageDialog(null,"Początek druku","Hey!",JOptionPane.ERROR_MESSAGE);
            druk.print();
 JOptionPane.showMessageDialog(null,"OK","Hey!",JOptionPane.ERROR_MESSAGE);
         } catch (PrinterException e) {
            // TODO Auto-generated catch block
 JOptionPane.showMessageDialog(null,"Blad","Hey!",JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
         }
      }
   }

   
 public int print(Graphics arg0, PageFormat pageFormat, int arg2)
   throws PrinterException 
 {
 JOptionPane.showMessageDialog(null,"Koniec druku",
"Hey!",JOptionPane.ERROR_MESSAGE);

// numPages--;
if(numPages<0) {
return NO_SUCH_PAGE;
} else {
return PAGE_EXISTS;
}
}

Mam coś takiego.
Dziękuje za pomoc

0

Pomijajac skalowanie i formatowanie, najprosciej bedzie wywolac metode panel3.paint(g) wewnatrz metody odpowiedzialnej za drukowanie print(Graphics, PageFormat, int). Przed tym, w miare potrzeby, nalezaloby rzutowac klase Graphics na Graphics2D oraz wylaczyc podwojne buforowanie dla rysowanego komponentu.

0

Witam.
Dziękuje za pomoc.
Wszystko działa.
public int print(Graphics g, PageFormat pageFormat, int arg2)
throws PrinterException
{
panel3.print(g); wpisałem to i ok
}
Mam jeszcze jedno pytanie. Jak zrobić aby strona obrócić stronę, tzn żeby wydruk był poziomy.

0
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(javax.print.attribute.standard.OrientationRequested.PORTRAIT);
//lub
aset.add(javax.print.attribute.standard.OrientationRequested.LANDSCAPE);
0

No wszystko fajnie ale jak to zastosować?
Ja zrobiłem

PageFormat pageFormat = new PageFormat();
pageFormat.setOrientation(PageFormat.LANDSCAPE);
a potem tak:

public int print(Graphics g, PageFormat pageFormat, int arg2)

ale nie chce działać, tzn działa ale nie drukuje poziomo :(
Proszę o pomoc. Pozdrawiam

0

Hey.
Gdzie mam to zastosować?
Pozdrawiam

0

http://www.exampledepot.com/egs/java.awt.print/SetOrient.html
http://www.exampledepot.com/egs/java.awt.print/PrintBook.html

W sumie się pomyliłem, tamten kod był do drukowania JTable ;/

JTable table = new ...

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(javax.print.attribute.standard.OrientationRequested.LANDSCAPE);

MessageFormat headerFormat = new MessageFormat("Tabelka");
MessageFormat footerFormat = new MessageFormat("- {0} -");
        
try {
        table.print(JTable.PrintMode.NORMAL,
			headerFormat,
			footerFormat,
			true,
			aset,
			true
	);
} catch(Exception e) {
}
0

Hey.Dzięki za pomoc. Skorzystałem z tych linków które podałeś na stronie. I trochę zmieniłem i działa. Teraz pozostaje mi usunięcie marginesów z wydruku.
Dziękuje i pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1