Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用的小程序的主窗口是什么?如何引用它?_Java_Applet_Gstreamer - Fatal编程技术网

Java 调用的小程序的主窗口是什么?如何引用它?

Java 调用的小程序的主窗口是什么?如何引用它?,java,applet,gstreamer,Java,Applet,Gstreamer,我试图使用Xoverlay并调用setWindowHandle,但我需要提供一个组件。当我在eclipse中执行“作为小程序运行”时,eclipse会使用appletviewer创建一个小窗口。我想知道如何获取对该窗口的引用。我可以看到他们在这里添加元素: 他们只是使用add将其添加到主窗口中。现在在我的应用程序中,正在生成另一个显示视频的窗口,我希望该视频显示在主小程序窗口中,这样我就可以将小程序嵌入HTML页面并完全控制该窗口 我尝试使用“根窗格”,但出现以下错误: java.lang.I

我试图使用Xoverlay并调用setWindowHandle,但我需要提供一个组件。当我在eclipse中执行“作为小程序运行”时,eclipse会使用appletviewer创建一个小窗口。我想知道如何获取对该窗口的引用。我可以看到他们在这里添加元素:

他们只是使用add将其添加到主窗口中。现在在我的应用程序中,正在生成另一个显示视频的窗口,我希望该视频显示在主小程序窗口中,这样我就可以将小程序嵌入HTML页面并完全控制该窗口

我尝试使用“根窗格”,但出现以下错误:

java.lang.IllegalArgumentException: Component must be a native window
编辑:根据请求,这是我的代码(有问题的行中有注释):


尝试使用
getRootPane()
或从JApplet切换到Applet并使用
getParent()


没有代码,很难自信地回答。考虑创建一个。我不明白我需要提供什么代码。这只是一个概念性的问题。我不能真正提供SSCCE,因为我问这个问题的全部原因是因为我添加的不是Swing元素。这就是为什么我需要知道对主窗口的引用。我会编辑我的帖子,将我的代码包括在内,虽然我不确定这会有什么帮助。我很确定你应该在applet中访问的“主窗口”是applet/JApplet对象本身。您可以尝试使用
SwingUtilities.getWindowAnsentials()
,但小程序可能无法访问托管它的本机窗口,因为它不受JRE的控制。这也不起作用。我最终存储了方法开头的“this”指向的内容,然后在setWindowHandle中使用它。
import java.applet.Applet;
import java.awt.*;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.*;

import org.gstreamer.*;
import org.gstreamer.elements.PlayBin2;
import org.gstreamer.interfaces.XOverlay;
import org.gstreamer.lowlevel.GstXOverlayAPI;

public class VideoPlayer extends JApplet {
    public void init() {
        Gst.init();
        final PlayBin2 playbin = new PlayBin2("VideoPlayer");
        URI uri = null;
        try 
        {
            uri = new URI("udp://239.1.1.1:51002");
        } 
        catch (URISyntaxException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        playbin.setURI(uri);
        //System.setProperty("apple.awt.graphics.UseQuartz", "false"); 
        try {
            SwingUtilities.invokeAndWait(new Runnable() {

                public void run() {
                    Element videosink = ElementFactory.make("xvimagesink", "imagesink");
                    videosink.set("qos", "false");
                    videosink.set("sync", "false");
                    playbin.setVideoSink(videosink);
                    playbin.setState(State.PLAYING);
                    XOverlay.wrap(videosink).setWindowHandle(rootPane); // I need the handle to the main window here
                }
            });
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Gst.main();
        playbin.setState(State.NULL);
    }
}
XOverlay.wrap(videosink).setWindowHandle(getRootPane()|getParent());