2014-12-04 74 views
2

在Java中,我想使用JFileChooser以自己的格式加載一個文件[無論它是什麼格式]。意思是我不想閱讀和顯示我的JFrame內的內容。相反,我希望它們可以像在Windows照片查看器/ Irfan查看器中打開的圖像一樣打開/加載,並在Adobe Reader中打開PDF。通過單擊按鈕。如何使用JFileChooser加載文件?

我已經搜查了很多。但是,我閱讀的所有教程都通過單擊JButton來說明如何打印「打開此文件/選擇此文件」行。實際上沒有人按鈕點擊打開/加載文件。可能是我沒有正確地得到他們說的,因爲我是Java的新手。我希望我的問題是明確的,請幫助...

這裏是我從一個教程頁面得到的代碼:

public class JFileChooserTest { 

    public static void main(String[] args) { 
     JFrame.setDefaultLookAndFeelDecorated(true); 
     JDialog.setDefaultLookAndFeelDecorated(true); 
     JFrame frame = new JFrame("JComboBox Test"); 
     frame.setLayout(new FlowLayout()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JButton button = new JButton("Select File"); 
     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
      JFileChooser fileChooser = new JFileChooser(); 
      int returnValue = fileChooser.showOpenDialog(null); 
      if (returnValue == JFileChooser.APPROVE_OPTION) { 
       File selectedFile = fileChooser.getSelectedFile(); 
       System.out.println(selectedFile.getName()); 
      } 
      } 
     }); 
     frame.add(button); 
     frame.pack(); 
     frame.setVisible(true); 
    }  
} 

這是我想與Java做的。這裏是有窗戶的例子:

瀏覽按鈕即可打開該窗口

當我選擇XLS文件並單擊打開按鈕,XLS文件將打開。我想和Java完全一樣。希望現在更清楚。

+0

你想要什麼?你想看文件內容嗎? – Adem 2014-12-04 07:42:22

+0

不,我想加載/導入我通過單擊按鈕選擇的文件。就像我們在Windows文件打開資源管理器中打開文件。 – Sam 2014-12-04 07:43:47

+1

你能解釋一下「load/import」是什麼意思? – Adem 2014-12-04 07:48:20

回答

4

您可以嘗試使用Desktop.open()

Desktop.getDesktop().open(selectedFile); 

編輯 這裏需要更新:

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent ae) { 
     JFileChooser fileChooser = new JFileChooser(); 
     int returnValue = fileChooser.showOpenDialog(null); 
     if (returnValue == JFileChooser.APPROVE_OPTION) { 
     File selectedFile = fileChooser.getSelectedFile(); 
     java.awt.Desktop.getDesktop().open(selectedFile);//<-- here 
     } 
    } 
}); 

示例代碼site

+0

我覺得這是迄今爲止較好的答案。一旦建立起來,它實際上是一個「一線」使用它。順便說一句 - 嘗試'desktop.open(新文件(System.getProperty(「user.home」));'這是一個很好的演示,因爲它應該可以在任何*機器上工作 – 2014-12-04 08:25:45

+0

@Sam,問題是什麼?是的,它應該打開指定的文件與用戶電腦中的默認編輯器,即記事本在Windows中的.txt的情況下 – Arvind 2014-12-05 11:09:07

+0

此代碼將打開一個文本/ PDF,我們在裏面提到[File file = new File(「/ Users/pankaj/source.txt「);]。但是我怎樣才能瀏覽和選擇一個文件,然後點擊」OPEN「 - 我希望文件打開。一個文本文件在一個筆記本和Windows照片查看器中的圖像等 – Sam 2014-12-05 11:27:23

1

如果我理解正確,您想要選擇一個文件並將其傳遞給系統的默認應用程序。不幸的是,這對你的操作系統是非常可靠的。對於Windows可以傳遞到這樣的命令行:

 String systemcall = "cmd /C start \"\" \"" + absolutePath + "\""; 
     Runtime runTime = Runtime.getRuntime(); 
     HomeLogger.instance().info("EXECUTE " + systemcall); 
     runTime.exec(systemcall); 

絃樂絕對路徑必須是文件的確切locatin,例如「C:\ test.txt的」。我希望這有助於!

+0

謝謝我要試試這個,但對我來說需要先研究一下。 – Sam 2014-12-04 08:10:04

+0

另請參見[當Runtime.exec()不會](http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html)很多很好的有關正確創建和處理過程的提示。然後忽略它是指'exec'並使用'ProcessBuilder'來創建進程。 **但對於更好的*和*更可靠的答案,請參閱[本答案](http://stackoverflow.com/a/27289106/418556)。** – 2014-12-04 08:22:28