2017-02-15 76 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中单击文件名并立即打开它。 –