Подтвердить что ты не робот

Как распечатать одно содержимое JPanel?

У меня есть JPanel с двумя ярлыками с картинками. Мне нужно напечатать это содержимое JPanel. Пожалуйста, помогите мне. Как я могу напечатать только это содержимое JPanel, так как у меня также есть разные компоненты на моем JFrame, но мне просто нужно распечатать этот JPanel.

Спасибо.

4b9b3361

Ответ 1

Вот образец для печати любого компонента Swing.

public void printComponenet(){

  PrinterJob pj = PrinterJob.getPrinterJob();
  pj.setJobName(" Print Component ");

  pj.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());
      componenet_name.paint(g2);
      return Printable.PAGE_EXISTS;
    }
  });
  if (pj.printDialog() == false)
  return;

  try {
        pj.print();
  } catch (PrinterException ex) {
        // handle exception
  }
}

Надеюсь, это поможет другим.

Ответ 2

Простым способом сделать это будет реализация интерфейса Printablejava.awt.print) и добавление указанного метода print (он работает аналогично paint -in здесь, вы можете указать, какие компоненты вы бы хотите нарисовать на печатной странице). И когда вы хотите на самом деле распечатать содержимое панели, получите экземпляр PrinterJob и вызовите его метод setPrintable, передав объект, который реализовал Printable.

Тем не менее, это просто краткий обзор. Я бы рекомендовал взглянуть на учебник Sun по печати для получения дополнительной информации.

Ответ 3

просто отредактируйте и поместите имя своего фрейма, панели (jPanel1) и кнопки (печать). 'this' относится к классу JFrame (то есть мой класс расширяет javax.swing.JFrame) просто поместите ссылку на кадр вместо 'this'.

private void PritnActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Toolkit tkp = jPanel1.getToolkit();
    PrintJob pjp = tkp.getPrintJob(this, null, null);
    Graphics g = pjp.getGraphics();
    jPanel1.print(g);
    g.dispose();
    pjp.end();
}