大家好, 现在有一天我面临严重的问题。我制作了一个java程序,需要打印一个这个程序的JFrame。但我不能这样做。 我在网上搜索但是我发现的代码只打印第一个元素意味着只有1个元素可能是JLabel或JTextBox。但我需要用所有数据打印整个页面。
有人可以帮助我吗?
由于
答案 0 :(得分:1)
将此代码附加到您的班级。希望这会对你有所帮助
首先实现Java类的Printable接口
class ClassName extends JFrame implements Printable
{
//your code goes here
}
实现Printable接口后覆盖方法print()
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
//Give the component to be printed here...
System.out.println("Successfully printed");
return PAGE_EXISTS;
}
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
//Give the component to be printed here...
System.out.println("Successfully printed");
return PAGE_EXISTS;
}
现在决定要打印的内容。编写代码的方式是所有组件必须位于一个父JPanel(parentPanel)上。现在在注释旁边的上面代码中给出这将打印该父面板上的所有组件。
现在我们告诉Java程序要打印什么但是为了完成这个打印工作,我们必须创建PrinterJob
parentPanel.print(g)
将此代码放在打印按钮的ActionListener中。