2017-01-12 12 views
2

ユーザがボタンをクリックすると、コンピュータにインストールされているデフォルトのPDFリーダーを使用してPDFが開きます。 オープンしたいPDFは、同じパッケージの「アプリケーション」にあります。 PDFファイルは、呼び出し元のファイル(あなたが述べると)同じパッケージ内にある場合JavaFXの関連プログラムを含むPDFファイルを開く

私が使用していたコードは、その後、

getHostServices().showDocument(getClass() 
    .getResource("computer_graphics_tutorial.pdf").toString()); 

package application; 

import java.io.File; 
import javafx.application.Application; 
import javafx.application.HostServices; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.StackPane; 
import javafx.stage.FileChooser; 
import javafx.stage.Stage; 


public class Main extends Application { 

    @Override 
    public void start(final Stage primaryStage) { 
     Button btn = new Button(); 
     btn.setText("Load PDF"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 

       File pdfFile = new File("computer_graphics_tutorial.pdf"); 
       getHostServices().showDocument(pdfFile.toURI().toString()); 
      } 
     }); 

     StackPane root = new StackPane(); 
     root.getChildren().add(btn); 

     Scene scene = new Scene(root, 300, 250); 


     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

だから問題は何ですか?それはクラッシュしますか?期待していたこととは違ったことをしていますか?正確な問題が何であるかをもう少し説明してください。 – n247s

答えて

3

ある問題を解決する必要があります。

getResourceの方法は、実際に柔軟にファイルを見つけるために使用できます。ここではそれを使用する方法の小さな説明:JavaFX resource handling: Load HTML files in WebViewです。

+0

@ DVargaありがとうございました。できます。私はもう一つ知りたいのですが。コントローラクラスでgetHostServices()を使用すると、動作しません。それはなぜそうですか?この内部の例:public void initialize(URL location、ResourceBundle resources){} – mistletoe

+0

コントローラが別のパッケージに入っていると思いますので、ファイルを適切に見つけるために 'getResource'呼び出しを更新する必要があります。回答のリンクは、プロジェクト構造内でファイルを見つける方法を助けます。 – DVarga

+0

@ DVargaありがとうございました! :) – mistletoe

関連する問題