Печать в Java

Тема в разделе "Java", создана пользователем -, 22 дек 2008.

  1. Гость

    Берем этот код, сохраняем в отдельном файле, затем, вызываем статический метод PrintUtilities.printComponent(p3); который принимает компонент (обозначен p3) в виде параметра, который и распечатывается. В моем коде на форму кладется компонент Panel (все происходит в среде NetBeans), в окошке (компонент Panel принимает на форме вид окошка) рисуется картинка и вопрос такой: что нужно передать в статический метод из примера приведенной ссылки в виде параметра, чтобы распечатался рисунок? У меня печатается сама форма с кнопками, и с окошком, но окошко пустое, сам рисунок не печатается.
     
  2. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    свой код приведи, я вообще хз, что там нетбинс может нагенерить. и delphi-style developming плохо сочитается с явой вообще и свингом в частности.
     
  3. Гость

    // Обработчик нажатия кнопки.

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    double[]d={159.5,169.5,155.5,164.5,173.0,158.5,173.5,165.5,161.5,166.5,
    152.0,166.0,163.0,167.0,157.5,167.5,162.0,164.5,169.0,160.5,170.5,162.5,
    164.0,171.5,153.5,170.5,165.5,163.0,163.0,166.5,158.0,165.0,168.0,169.5,
    164.5,169.0,156.0,167.0,163.5,169.5,157.5,171.0,161.5,173.0,165.5,156.5,
    172.0,162.5,174.0,159.0,170.0,161.5,166.5,154.0,168.5,162.5,174.5,160.0,
    177.0,164.0,165.0,158.5,166.0,167.0,160.0,168.5,162.5,163.5,167.5,157.0,
    172.5,164.5,160.0,175.0,166.0,161.0,170.5,162.5,174.5,161.0,167.5,165.0,
    153.0,169.0,163.5,162.0,161.0,167.0,171.0,156.5,164.5,169.0,159.5,168.0,
    166.0,156.0,166.5,168.0,160.5,168.5};

    double[]v={1595,1695,1555,1645,1730,1585,1735,1655,1615,1665,1520,1660,1630,
    1670,1575,1675,1620,1645,1690,1605,1705,1625,1640,1715,1535,1705,1655,1630,
    1630,1665,1580,1650,1680,1695,1645,1690,1560,1670,1635,1695,1575,1710,1615,
    1730,1655,1565,1720,1625,1740,1590,1700,1615,1665,1540,1685,1625,1745,1600,
    1770,1640,1650,1585,1660,1670,1600,1685,1625,1635,1675,1570,1725,1645,1600,
    1750,1660,1610,1705,1625,1745,1610,1675,1650,1530,1690,1635,1620,1610,1670,
    1710,1565,1645,1690,1595,1680,1660,1560,1665,1680,1605,1685};

    Consider.selaver(d); // Считает выборочное среднее.
    Consider.seldisp(d); // Считает выборочную дисперсию.
    Consider.corseldisp(d); // Исправленная дисперсия.
    Consider.corfactor(d, v); // Коэффициент корреляции.

    Consider.selaver(v);
    Consider.seldisp(v);
    Consider.corseldisp(v);
    Consider.corfactor(v, d);

    Axes ax=new Axes(jPanel1.getGraphics(), jPanel1.getBackground()); // Конструктор координатных осей.
    ax.show(); // Рисует оси координат на jPanel.
    Histogram ht=new Histogram(jPanel1.getGraphics(), jPanel1.getBackground(), d); // Конструктор гистограммы.
    ht.show(); // Рисует гистограмму на jPanel.
    }
     
  4. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    смотрим сюда

    Код (Text):
    m ht=new Histogram(jPanel1.getGraphics(), jPanel1.getBackground(), d); // Конструктор гистограммы.
    ht.show(); // Рисует гистограмму на jPanel.
    потом сюда

    Код (Text):
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
    if (pageIndex > 0) {
    return(NO_SUCH_PAGE);
    } else {
    Graphics2D g2d = (Graphics2D)g;
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    disableDoubleBuffering(componentToBePrinted);
    componentToBePrinted.[b]paint(g2d);[/b]
    enableDoubleBuffering(componentToBePrinted);
    return(PAGE_EXISTS);
    }
    }
    думаем, при необходимости повторяем.
     
  5. Гость

    При необходимости повторяем, что? "Думаем"? Бесконечный цикл получается, а хотелось бы просто распечатать нарисованное. :D
     
  6. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    мало повторяли,

    вызывать надо в paint(), а не где попало
     
  7. Гость

    Слушай! Что-то я тебя не пойму. Что значит где попало? И причем тут paint()? И как он (paint()) относится к цитируемому тобой коду в последнем комменте? Я ж говорю, все рисуется в jPanel, автор кода, ссылку на который я дал в первом комменте, утверждает, что передав графический компонент в виде параметра в функцию PrintUtilities.printComponent() он (компонент) должен распечататься. jPanel графический компонент (и то, что в нем намалевано), следовательно, должен распечатываться, а он не распечатывается. Если знаешь что нужно делать - скажи конкретно, пространные рассуждения мне дилетанту не понятны.
    P.S. И все-таки к выводу на принтер ближе категория printing, а не painting (это я по поводу paint()).
     
  8. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    автор кода предполает, что человек, который будет использовать его код, знаком с архитектурой свинга и знает как правильно делать кастомную отрисовку. а вот к кастомной отрисове paint(), paintComponent() и тд имеют самое не посредственное значение
     
  9. Гость

    Я не знаю, поэтому-то и интересуюсь. Можешь продемонстрировать в коде? А то я что-то не вгоню, что нужно и где поменять.
     
  10. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    я уже сказал, переопредели paint() или paintComponent() и отрисовывай там все что хошь. googele it: swing custom painting
     
  11. Гость

    Говорят: ясность мыслей - четкость изложения. Что-то пока не встречал на этом форуме ни того, ни другого .
     
  12. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    если вам что то не понятно, это еще не значит, что плохо объясняют...
     
  13. Гость

    Не смеши меня! Сам понимаешь о чем говоришь? "переопредели paint() или paintComponent()" - фраза которая говорит сама за себя. Порой, сказать не знаю, полезней, да и честней, чем вводить в блуд.
     
Загрузка...

Поделиться этой страницей