2009-01-20 8 views
1

Je creat une interface graphique dans JavaFX et appeler le composant JMF au sein de JavaFX, tout comme ceJMF + problème mise en page 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 
     } 
    } 
} 

La vidéo peut être joué IUG JavaFX, mais quand je déplace le curseur de la souris dans la barre de contrôle du lecteur JMF, la fenêtre vidéo se déplacera en même temps.

Est-ce que quelqu'un a une idée de comment je peux faire fonctionner JMF normalement dans JavaFx?

Répondre

0

J'ai une solution. C'était, après avoir essayé quelques changements, mettre la propriété "disable" du composant JMFComponent à "false". Cela peut empêcher une partie de l'écran qui contient le streaming d'y déplacer le pointeur de la souris.

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