如何通过单击按钮打开PDF文档?

时间:2017-02-25 08:25:12

标签: java swing pdf

我使用Java和Netbeans开发员工薪资管理系统。我单击打开按钮时打开.pdf文件。

但是当我点击打开按钮时,我想选择该文件。

我该怎么做?

我想使用JFileChooser

那么如何使用JFileChooser打开PDF文件?

这是打开按钮的代码,但这不完整 - 它不会打开PDF。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    JFileChooser chooser = new JFileChooser();
    chooser.showOpenDialog(null);
    File f = chooser.getSelectedFile();
    filename = f.getAbsolutePath();
}                                        

2 个答案:

答案 0 :(得分:2)

其中两部分:

  • 使用文件选择器选择一个文件(您已经拥有该文件)
  • 然后将该文件名与一些能够打开/显示PDF文件的Java组件一起使用;或者使用javas ProcessBuilder启动一个新的外部进程,使用Adobe Reader等工具打开该文件。

例如,可以找到更多的想法here

答案 1 :(得分:2)

您可以像这样使用Desktop.getDesktop().open(new File(path));

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
     openFile();
}

使用JFileChooser并打开您的pdf文件的方法:

private void openFile() throws IOException, ClassNotFoundException {


    FileFilter fJavaFilter = new FileFilter();
    JFileChooser fc = new JFileChooser();
    fc.setDialogTitle("Open your file");
    fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    fc.setCurrentDirectory(new File("."));
    fc.setFileFilter(fJavaFilter);

    int result = fc.showOpenDialog(this);
    if (result == JFileChooser.CANCEL_OPTION) {
        //cancel action
    } else if (result == JFileChooser.APPROVE_OPTION) {

        //open file using 
        File selectedFile = fc.getSelectedFile();
        String path = selectedFile.getAbsolutePath();

        File myFile = new File(path);
        Desktop.getDesktop().open(myFile);

    }
}

修改

我们使用FileFilter仅过滤我们需要的扩展程序,如果您不想使用任何过滤器,可以像这样评论这两行:

    //FileFilter fJavaFilter = new FileFilter();
    //....
    //fc.setFileFilter(fJavaFilter);

如果您想使用Filter,可以将此类添加到项目中,也可以在同一个类中使用它:

class FileFilter extends javax.swing.filechooser.FileFilter {

    @Override
    public boolean accept(File f) {
        //your filter here
        return f.getName().toLowerCase().endsWith(".pdf")
                || f.isDirectory();
    }

    @Override
    public String getDescription() {
        return "Select file (*.pdf)";
    }
}