2012-01-15 5 views
1

Я использую netbeans, и у меня есть код для печати jpanel, и он отлично работает. Однако его вывод заключается в том, что он печатает jpanel в качестве изображения. Это не идеально для меня, поскольку оно также печатает выцветший серый цвет в фоновом режиме, который является размером jpanel. Я хочу только напечатать текст в jpanel, который состоит из многих jlabels. Есть ли способ распечатать содержимое jpanel как текст, а не изображение?Как распечатать содержимое jpanel в виде текста?

Это код, который я использовал, чтобы напечатать содержимое моего JPanel

PrinterJob job = PrinterJob.getPrinterJob(); 
    job.setJobName("jPanel13"); 

    job.setPrintable (new Printable() {  
     public int print(Graphics pg, PageFormat pf, int pageNum){ 
      if (pageNum > 0){ 
      return Printable.NO_SUCH_PAGE; 
      } 

      Graphics2D g2 = (Graphics2D) pg; 
      g2.translate(pf.getImageableX(), pf.getImageableY()); 
      jPanel13.paint(g2); 
      return Printable.PAGE_EXISTS; 
     } 
    }); 
    boolean ok = job.printDialog(); 
    if (ok) { 
     try { 
       job.print(); 
     } catch (PrinterException ex) { 

     } 

Это PrintScreen из JPanel, что мне нужно напечатать. В моей программе текстовые значения jlabels могут быть изменены пользователем. Затем тексты jlabels будут напечатаны, чтобы заполнить пустые строки формой. Форма уже будет писать на нем; это только пустые строки, которые я буду заполнять при печати. Вот почему важно, чтобы jlabels располагались таким образом.

http://i.stack.imgur.com/kPKWe.jpg

enter image description here

+0

Можете ли вы показать нам образ этого JPanel, чтобы дать нам представление о том, что вы пытаетесь сделать? –

+0

спасибо, что ответили, я только что редактировал мой пост – meebee

+0

Я отредактировал ваш оригинальный вопрос и загрузил ваше изображение, чтобы оно отображалось без участия людей на другом сайте. Сам, если бы мне пришлось решить эту проблему, я бы искал библиотеку создания форм, потому что я уверен, что она была создана для решения такой проблемы, так что мне не пришлось бы пытаться создать kludge решение с использованием графического интерфейса пользователя таким образом, чтобы он не был построен для использования. –

ответ

3

Если JPanel фон единственная проблема, вы можете вызвать print() на нем вместо paint(), и переопределить printComponent() не делать ничего (по умолчанию просто вызывает paintComponent()).

В качестве альтернативы, просто установите цвет фона в белый цвет во время печати.

+0

спасибо, что ответили, это полезно. я попробую это. – meebee

Смежные вопросы