1

このように、javafx で GUI を作成し、JavaFx 内で JMF コンポーネントを呼び出すことができます。

public class JMFComponent extends SwingComponent{

    var panel: JPanel;


    public var center: java.awt.Component on replace{
        println("[center] set component: {center}");
        panel.add(center, BorderLayout.CENTER);
    }


    public override function createJComponent():javax.swing.JComponent{
        panel= new JPanel(new BorderLayout());

        var size:Dimension =   new  Dimension(width, height);
        panel.setPreferredSize(size);
        panel.setMinimumSize(size);
        panel.setMaximumSize(size);
        panel.setSize(size);
        return panel;
    }
}

public class MyMedia extends CustomNode {

    var xpos: Number;
    var ypos: Number;
    var dx: Number;

    public var url: java.net.URL;
    public var autoPlay: Boolean;

    public override function create(): Node{

        var comp:java.awt.Component;
        var control:java.awt.Component;
        var w:Number;
        var h:Number;
        var cw:Number;
        var ch:Number;

        var jmfCom:JMFComponent;
        var player = Manager.createRealizedPlayer(url);

        comp=player.getVisualComponent();

        control=player.getControlPanelComponent();

        if (autoPlay) {
            player.start();
        }
        w=comp.getPreferredSize().getWidth();
        h=comp.getPreferredSize().getHeight();
        cw=control.getPreferredSize().getWidth();
        ch=control.getPreferredSize().getHeight();
        jmfCom=JMFComponent {
                    width:w
                    height:h+ch
                    center:  comp
                    blocksMouse: true
                    bottom:  control
                };

        return Group{
            content: [

                jmfCom

            ] 

        }
    }
}

Stage {
    title: "Media Example"
    width: 500
    height: 500
    onClose: function(){ java.lang.System.exit(0);}
    scene: Scene {
        content: MyMedia{
            url: (
                new java.io.File("C://My//Videos//DELTA.MPG")).toURI().toURL()
            autoPlay: true
        }
    }
}

ビデオは JavaFx GUI 内で再生できますが、マウス カーソルを JMF プレーヤーのコントロール バーに移動すると、ビデオ ウィンドウも同時に移動します。

JavaFx内でJMFを正常に動作させる方法を知っている人はいますか?

4

2 に答える 2

3

なぜJMFなのか?javafx.scene.mediaの下にきちんとしたAPIがあります

于 2009-02-02T21:24:01.673 に答える
0

解決策があります。いくつかの変更を試みた後、コンポーネントJMFComponentのプロパティ「disable」を「false」に設定しました。これにより、ストリーミングを含む画面の一部がマウスポインタを移動するのを防ぐことができます。

jmfCom=JMFComponent {
    width:   w*2
    height:  h*2  //+ch
    center:  comp
    disable: true
};
于 2009-07-31T22:51:37.100 に答える