Проблема макета JMF + JavaFx - PullRequest
1 голос
/ 20 января 2009

Я могу создать графический интерфейс в javafx и вызвать компонент JMF в JavaFx, вот так

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, но когда я перемещаю курсор мыши в панель управления проигрывателя JMF, видео окно одновременно перемещается.

У кого-нибудь есть идеи, как заставить JMF нормально работать в JavaFx?

Ответы [ 2 ]

3 голосов
/ 03 февраля 2009

Почему JMF? В javafx.scene.media

есть аккуратный API
0 голосов
/ 01 августа 2009

У меня есть решение. После нескольких изменений было установлено, что свойство "disable" компонента JMFComponent установлено в значение "false". Это может помешать некоторым экранам, содержащим потоковую передачу, перемещать указатель мыши на нем.

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