2015-11-05 15 views
0

我遇到問題。當我點擊我的按鈕後,將jTable添加到PDF中,保存後,表格消失,當我清除它時,表格變得更大並破壞用戶界面。 MainTable1是我的用戶界面上存在的表。表格在我將其寫入PDF後重置表格

下面的代碼:

String path = ""; 
    JFileChooser fileChooser = new JFileChooser(); 
    fileChooser.setCurrentDirectory(new File(System.getProperty("user.home"))); 
    int result = fileChooser.showOpenDialog(this); 
    if (result == JFileChooser.APPROVE_OPTION) { 
      File selectedFile = fileChooser.getSelectedFile(); 
      path = selectedFile.getAbsolutePath(); 

     getContentPane().setLayout(new BorderLayout()); 
     JTable table = mainTable1; 
     JPanel tPanel = new JPanel(new BorderLayout()); 
     tPanel.add(table.getTableHeader(), BorderLayout.NORTH); 
     tPanel.add(table, BorderLayout.CENTER); 
     getContentPane().add(tPanel, BorderLayout.CENTER); 
     com.itextpdf.text.Document document = new com.itextpdf.text.Document(); 
     PdfWriter writer; 
     try { 
      writer = PdfWriter.getInstance(document, new FileOutputStream(path)); 
      document.open(); 
      PdfContentByte cb = writer.getDirectContent(); 
      PdfTemplate tp = cb.createTemplate(500, 500); 
      Graphics2D g2; 
      g2 = tp.createGraphicsShapes(500, 500); 
      table.print(g2); 
      g2.dispose(); 
      cb.addTemplate(tp, 30, 300); 
      document.close(); 
      tableToPDFButton.setEnabled(false); 
     } catch (FileNotFoundException | DocumentException ex) { 
      Logger.getLogger(HealthApplicationUI.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

回答

0

並保存後,該表中消失

JTable table = mainTable1; 
    JPanel tPanel = new JPanel(new BorderLayout()); 
    tPanel.add(table.getTableHeader(), BorderLayout.NORTH); 
    tPanel.add(table, BorderLayout.CENTER); 

Swing組件只能有一個父。它看起來像你將桌子從一個GUI移動到另一個。

如果你想拷貝的表,然後使用TableModel來創建第二個表:

JTable table = new JTable(mainTable1.getModel());