2017-02-15 109 views
-1

我創建了一個名爲文件管理器的按鈕,並且我創建了一個表。當我點擊我的文件管理器時,我可以看到表格中的pdf文件列表。但點擊桌面上的單個文件,我怎樣才能打開我的PDF文件,而不用直接在程序中提供我們的PDF文件名?我已附上下面的示例代碼。在那裏,我可以選擇單個行,但我無法打開PDF文件。我附上了圖片。請檢查一下。通過點擊pdf文件名稱使用java打開JTable中的PDF文件

在此先感謝。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {            

     String[] r = new String[5]; 
     String dirPath = "D:\\Pdf\\"; 
     File dir = new File(dirPath); 
     String[] files = dir.list(); 

     if (files.length == 0) { 
     System.out.println("The directory is empty"); 

     } else { 
     for (String aFile : files) { 
      System.out.println(aFile); 
     } 
    } 

    DefaultTableModel model = (DefaultTableModel)jTable1.getModel(); 
    model.setColumnIdentifiers(new String[]{"aFile"}); 

    Object[] row = new Object[1]; 

    for(int i = 0; i <files.length; i++) { 
     row[0] = files[i].toString(); 
     model.addRow(row); 
    } 

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {  

     try { 
      int row = jTable1.getSelectedRow(); 

      if (row > -1) { 

       String Table_click = (jTable1.getValueAt(row, 0).toString()); 
       jTable1.getSelectedRow(); 
       // model.setColumnIdentifiers(new String[]{"aFile"}); 

       Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " 
              + Table_click); 
      } 
    } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e); 
    } 

}  

enter image description here

+0

開始,不要將它們轉換爲'String',這將使它更容易調用'桌面.open'。如果您需要自定義對象的外觀,請改爲使用單元格渲染器 – MadProgrammer

回答

0

嘗試Desktop.open()方法。

並把PDF的內容設置在temp file和維護File`對象'列表中打開此

+0

謝謝您的回覆。我已經嘗試過使用desktop.open()方法,但它顯示了父驅動器中的所有pdf文件。但我想從表中選擇一個pdf文件並打開它。 –

+0

@vidyab你傳遞了什麼'Desktop.open'?你是否將'File' /'URL'引用傳遞給物理文件或目錄? – MadProgrammer

+0

@Thomas Pawlitzki我喜歡[String dirPath =「D:\\ Pdf \\」; 文件dir =新文件(dirPath); 桌面d = Desktop.getDesktop(); d.open(dir);],我傳遞了目錄,但在代碼中傳遞文件的名稱不會幫助我,我想從jTable中單擊文件名並立即打開它。 –