ドキュメント



JavaFX: 相互運用性

5 メディア機能を使用したアプリケーションの強化

この章では、ビデオ・ファイルを再生し、再生および一時停止ボタン、再生の進行状況を表示したり音量を調整するためのスライダ、繰返しをオンにするチェック・ボックスなど、ビデオ・プレーヤの一般的なコントロールを備えたMedia Playerアプリケーションについて説明します。

この章の内容を理解するには、開発者がメディア・アプリケーションの作成に使用できるjavafx.scene.mediaパッケージに関する知識が必要です。

メディアの統合について

次の主要クラスを使用して、任意のJavaFXメディア・アプリケーションをビルドできます。

  • Mediaクラス: メディア・リソースを表します。

  • MediaPlayerクラス: 指定したリソースを再生するためのコントロールを提供します。

  • MediaViewクラス: MediaPlayerオブジェクトによって再生されるメディア・リソースの表示を提供します。

MediaViewクラスはNodeクラスのサブクラスであるため、MediaViewオブジェクトをJavaFXシーンに追加することが可能です。これは、JavaFXのメディア機能をデスクトップおよびWebアプリケーションに統合するための基礎となる重要な要素です。JavaFXシーンをSwingアプリケーションに埋め込む方法を理解したところで、次はMedia Playerコンポーネントの統合によって、さらにアプリケーションを強化します。MediaViewオブジェクトは、他のすべてのノードと同じように、アニメーション化、変換および効果の適用が可能です。このため、多くの独創的なタスクをサポートできます。

Media Playerアプリケーションのビルド

JavaFXアプリケーションへのメディア・アセットの組込みには、EmbeddedMediaPlayerアプリケーションの作成方法に関する詳細な手順が記載されています。また、Netbeansプロジェクト・ソースも提供されます。詳細な手順に従ってアプリケーションをビルドするか、サイドバー上のリンクを使用して、ソース・プロジェクトをダウンロードします。

この章で説明するMediaPlayerアプリケーションは、EmbeddedMediaPlayerアプリケーションに基づいていますが、その一部が次のように強化されています。

  • このアプリケーションは、プログラミングのベスト・プラクティスとして、外部のCSSファイルを使用します。

  • コントロール・バーに、繰返しをオンにするためのLoopチェック・ボックスが含まれています。

図5-1に、アプリケーション・ウィンドウを示します。

図5-1 Media Playerアプリケーションのウィンドウ

図5-1の説明が続きます
「図5-1 Media Playerアプリケーションのウィンドウ」の説明

EmbeddeMediaPlayerプロジェクトを変更するか、そのコピーを別名で保存して新しいプロジェクトを変更できます。

CSSを使用したアプリケーションのスキニング

CSSを使用してアプリケーションをスキニングするには、まずmediaplayer.cssファイルを作成し、そのファイルを、アプリケーションのソース・ファイルとともにフォルダに保存します。例5-1に示すスタイル・ルールを追加します。

例5-1

#mediaControl {
    -fx-background-color: #bfc2c7;
}
#mediaViewPane {
    -fx-background-color: black;;
}

次に、MediaControl.javaファイルを開き、MediaControlコンストラクタから、例5-2に示す行を削除します。

例5-2

setStyle("-fx-background-color: #bfc2c7;");
mvPane.setStyle("-fx-background-color: black;");

その後、例5-3に太字で示した行を追加することによって、MediaControlコンストラクタを変更します。

例5-3

public MediaControl(final MediaPlayer mp) {
    this.mp = mp;
    setId("mediaControl");

    mediaView = new MediaView(mp);
    Pane mvPane = new Pane();
    mvPane.getChildren().add(mediaView);
    mvPane.setId("mediaViewPane");
    setCenter(mvPane);

コントロール・バーへの新しいコントロールの追加

コントロール・バーに新しいコントロールを追加する作業は、いくつかの手順を実行するだけで完了します。MediaControlクラスのインスタンス変数を定義するセクションで、例5-4に示す、repeat変数の定義を削除します。

例5-4

private final boolean repeat = false;

MediaControlクラスで、例5-5に示す、repeatインスタンス変数を使用するコードを削除します。

例5-5

mp.setCycleCount(repeat ? MediaPlayer.INDEFINITE : 1);

ここで、例5-6に示すように、クラス変数repeatBoxを追加します。

例5-6

private CheckBox repeatBox;

Media Playerのコントロール・バーに、ラベルとチェック・ボックスを追加します。このコードは、MediaControlコンストラクタで、volumeSliderをバーに追加する行の後に配置します(例5-7を参照)。

例5-7

mediaBar.getChildren().add(volumeSlider);

Label repeatLabel = new Label("  Loop: ");
repeatLabel.setPrefWidth(50);
repeatLabel.setMinWidth(25);
mediaBar.getChildren().add(repeatLabel);

repeatBox = new CheckBox();
repeatBox.setSelected(true);
mediaBar.getChildren().add(repeatBox);

setBottom(mediaBar);

例5-8に示すように、チェック・ボックスの使用に関するロジックを、setOnEndOfMediaメソッドに実装します。

例5-8

mp.setOnEndOfMedia(new Runnable() {

    public void run() {
        if (repeatBox.isSelected()) {
            mp.seek(mp.getStartTime());
        } else {
            playButton.setText(">");
            stopRequested = true;
            atEndOfMedia = true;

        }
    }
});

Media Playerが、ファイアウォールの内側から実行されたときに、リモート・メディア・リソースにアクセスできるようにするには、-Dhttp.proxyHost=yourproxyhost.com -Dhttp.proxyPort=portNumberという形式のプロキシ設定を指定します。この例では、yourproxyhost.comはプロキシ、portNumberは使用するポート番号です。

アプリケーション・ファイル

ソース・コード 

NetBeansプロジェクト 

ウィンドウを閉じる

目次

JavaFX: 相互運用性

展開 | 縮小