2015-02-11 79 views
0

我有一個JTable,它有四列。我正在使用iText庫來打印來自JTable數據的PDF文檔。問題是JTable在PDF中沒有正確顯示。我在Google上搜索過,並且遇到了the same situation here。該代碼與我的以及輸出類似。我也試過this example using Templates,但結果沒有改變。在iText中安裝JTable PDF文檔

我們該如何解決?請協助。如果代碼是必要的,我會發布,但他們太多班 - 我正在一個大的應用程序工作。 我想要的概念是使JTable適合文檔。

+0

*我使用iTex圖書館* - 你的意思是** iText **?還是有其他一些庫,也許在TeX的背景下,你指的是? – mkl 2015-02-11 08:16:53

+0

@mkl謝謝我錯過了** t **,讓我把它放在 – JWizard 2015-02-11 09:08:38

回答

1

經過漫長的鬥爭,我設法如下所示。如果有人遇到這種情況,這是想法,救了我:

public void actionPerformed(ActionEvent e) { 

     try { 
      Document doc = new Document(); 
      PdfWriter.getInstance(doc, new FileOutputStream("table.pdf")); 
      doc.open(); 
      PdfPTable pdfTable = new PdfPTable(table.getColumnCount()); 
      //adding table headers 
      for (int i = 0; i < table.getColumnCount(); i++) { 
       pdfTable.addCell(table.getColumnName(i)); 
      } 
      //extracting data from the JTable and inserting it to PdfPTable 
      for (int rows = 0; rows < table.getRowCount() - 1; rows++) { 
       for (int cols = 0; cols < table.getColumnCount(); cols++) { 
        pdfTable.addCell(table.getModel().getValueAt(rows, cols).toString()); 

       } 
      } 
      doc.add(pdfTable); 
      doc.close(); 
      System.out.println("done"); 
     } catch (DocumentException ex) { 
      Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
}; 
+0

長期Java!歡呼 – mustangDC 2015-07-06 17:34:43

+0

我試過你的代碼。我得到了一個問題,並通過使用table.getRowCount()而不是table.getRowCount() - 1來修復它。 – Junaid 2016-04-27 05:50:26

+0

@Junaid好吧,那很好。當事情不能按我想要的方式發佈時,我寫了這些代碼。這很難,我是一個Java初級:) - – JWizard 2016-04-30 12:23:08