Я использовал printComponent, который был показан в другом вопросе. Он отлично работает для печати JPanel, если я сначала добавлю это JPanel к JFrame и нарисую JFrame на экране. Но если я не сделаю этого до того, как напечатать, у меня будет напечатана пустая страница. Почему это?
printComponent
JPanel
JFrame
Я использовал код, подобный следующему, чтобы создать BufferedImage на панели, которая не видна на фрейме:
JPanel panel = new JPanel(); ... // add components panel.setSize(300, 300); panel.doLayout();
потому что панель, которую вы хотите нарисовать, имеет начальный размер 0,0. После добавления в контейнер с менеджером макета и его отображения он получает «нормальный» размер.