Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印两张表格_Java - Fatal编程技术网

Java 打印两张表格

Java 打印两张表格,java,Java,我正试图打印一个包含两个表的jpanel,但问题是这些表的宽度比显示在其中的页面要大。有没有办法使表格适合页面宽度,或者我应该对表格本身进行大小调整 以下是我所做的: PrinterJob job = PrinterJob.getPrinterJob(); job.setJobName("test"); job.setPrintable (new Printable() { @Override public int print(Graphics pg, P

我正试图打印一个包含两个表的jpanel,但问题是这些表的宽度比显示在其中的页面要大。有没有办法使表格适合页面宽度,或者我应该对表格本身进行大小调整

以下是我所做的:

 PrinterJob job = PrinterJob.getPrinterJob();
 job.setJobName("test");

 job.setPrintable (new Printable() {    
        @Override
    public int print(Graphics pg, PageFormat pf, int pageNum) throws PrinterException{
        if (pageNum > 0){
        return Printable.NO_SUCH_PAGE;
        }


        Graphics2D g2 = (Graphics2D) pg;
        g2.translate(pf.getImageableX(), pf.getImageableY());
        jPanel1.print(g2);

         // jTable1.print(JTable.PrintMode.FIT_WIDTH, null, null);
        return Printable.PAGE_EXISTS;
    }
 });
 boolean ok = job.printDialog();
 if (ok) {
     try {
          job.print();
     } catch (PrinterException ex) {

     }
 }

一种解决方案是使用报表实用程序,因为通常这样更容易创建打印机输出,而且它们通常看起来更漂亮,因为这正是它们构建的目的。@hoverskifulofeels使用报表实用程序是什么意思???你的意思是使用jasper report???是的,这正是我的意思。我不认为Swing组件是为了清晰或容易地打印而构建的,而是为了在屏幕上显示数据而构建的。在上面的例子中,我们可以看到,为了使数据能够用Swing干净地打印出来,您必须跳出许多障碍。@HovercraftFullOfEels我尝试使用jasper reports,但不幸的是,出现了同样的问题,即我无法在同一个报告上打印两个表