killsushi
killsushi

Reputation:

JMF+JavaFx layout problem

I can creat a GUI in javafx and call the JMF component within JavaFx, just like this

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
        }
    }
}

The video can be played within JavaFx gui, but when i move my mouse cursor into the control bar of the JMF player, the video window will move at the same time.

Does anyone have an idea how I can get JMF working normally within JavaFx?

Upvotes: 1

Views: 1854

Answers (2)

Damian Rios
Damian Rios

Reputation:

I have a solution. It was, after trying a few changes, set the property "disable" of the component JMFComponent to "false." This can prevent some of the screen that contains the streaming going to move the mouse pointer on it.

jmfCom=JMFComponent {
    width:   w*2
    height:  h*2  //+ch
    center:  comp
    disable: true
};

Upvotes: 0

Honza
Honza

Reputation: 4409

Why JMF? There is neat API under javafx.scene.media

Upvotes: 3

Related Questions