Печать JComponent - PullRequest
       4

Печать JComponent

1 голос
/ 17 апреля 2011

Я должен иметь возможность печатать JComponent таким образом, чтобы он выглядел потрясающе. Не спрашивай меня, что удивительного, потому что я тоже не знаю.

JComponent должен быть слишком большим для страницы в формате x и y. Мне необходимо напечатать один и тот же JComponent на многих страницах, разделенных по заданной координате y.

Я пытался просто масштабировать JComponent, но получаю проблемы, чтобы выбрать заданную координату y и заставить ее выглядеть хорошо.

Я пытался изменить JComponent до заданного размера, хотя тогда заданная координата y проблематична, JComponent выглядит не очень хорошо, и у меня возникает много проблем, если программа изменяется.

Так что теперь я сижу здесь и не знаю, что делать, потому что, похоже, в Интернете не хватает учебников по теме ...

Как Word и другие текстовые программы достигают этого?

С наилучшими пожеланиями, Skarion

1 Ответ

4 голосов
/ 17 апреля 2011

Это распространенная проблема, я должен сказать, что уже сталкивался с ней.Для меня были полезны следующие учебные пособия:

  1. Tutorial1 --- Описывает проблему, показывает, как выглядит страница и т. Д.

  2. Tutorial2 --- Здесь у вас есть хороший пример рабочего кода, который я использовал при решении своих задач.Автор также представляет использование масштабирования, перевода и т. Д. Для печати. ​​

Надеюсь, это вам тоже поможет.

Может быть, когда вы узнаете больше о том, что в вашемпроблема значит круто, я могу помочь больше.:)

РЕДАКТИРОВАТЬ1:

    double scale = 1;
    //scale only when component is wider then a page (page and component widths are doubles)
    if(componentWidth > pageWidth)
        scale = pageWidth/ componentWidth;
    //I first calculate where each page should end 
    //...
    //then when I paint a page I calculate translation over Y for each page
    double translateY = 0;
    //if page index grater then zero then take where the previous page ends
    if(pageIndex > 0)
        translateY = pageHeightEnds.get(pageIndex - 1);
    //shift Graphic to line up with beginning of next page to print
    g2.translate(0f, -translateY);

    g2.setClip(0, (int) Math.round(translateY),(int) Math.round(pageWidth), (int) Math.round(currentPageWidth));
    //  scale the page so the width fits...
    g2.scale(scala, scala);
    componentToPaint.paint(g2); 

Удачи, Боро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...