将视频显示到 JPanel

2023-12-19

我正在创建一个简单的视频播放器,但在 JPanel 中显示要流式传输的视频文件时遇到问题。我创建并设计了一个 JFrame 并将一个正方形大小的 JPanel 放入表单内。

到目前为止,这是我的代码:

package SoundsTrip;

import java.awt.BorderLayout;
import java.awt.Component;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

/**
 *
 * @author jmoreno
 */
public class VideoFrame extends javax.swing.JFrame {
    /** Creates new form VideoFrame */
    public VideoFrame() {
        initComponents();
        //this.setExtendedState(VideoFrame.MAXIMIZED_BOTH);
        this.setSize(650, 500);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(null);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 450, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 330, Short.MAX_VALUE)
        );

        getContentPane().add(jPanel1);
        jPanel1.setBounds(10, 10, 450, 330);

        jButton1.setText("Open Video/Movie");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(470, 10, 160, 23);

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        try {
            openMedia();
        } catch (IOException ex) {
            Logger.getLogger(SoundBytePlaying.class.getName()).log(Level.SEVERE, null, ex);
        } catch (CannotRealizeException ex) {
            Logger.getLogger(SoundBytePlaying.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void openMedia() throws IOException, CannotRealizeException{
        JFileChooser fileChooser = new JFileChooser();
        int result = fileChooser.showOpenDialog(null);
        if(result == JFileChooser.APPROVE_OPTION){
            URL mediaURL = null;
            try{
                mediaURL = fileChooser.getSelectedFile().toURL();
            }catch(MalformedURLException malformedURLException){
                JOptionPane.showMessageDialog(null, "Could not create URL for the file");
            }
            if(mediaURL != null){
                **showVideo() //some error here**
            }
        }
    }

    public void showVideo(URL mediaURL){
        Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );

        try{
            //create a player to play the media specified in the URL
            Player mediaPlayer = Manager.createRealizedPlayer( mediaURL );

            //get the components for the video and the playback controls
            Component video = mediaPlayer.getVisualComponent();
            Component controls = mediaPlayer.getControlPanelComponent();

            if ( video != null )
                add( video, BorderLayout.CENTER ); //add video component
            if ( controls != null )
                add( controls, BorderLayout.SOUTH ); //add controls

                mediaPlayer.start(); //start playing the media clip
        } //end try
        catch ( NoPlayerException noPlayerException ){
            JOptionPane.showMessageDialog(null, "No media player found");
        } //end catch
        catch ( CannotRealizeException cannotRealizeException ){
            JOptionPane.showMessageDialog(null, "Could not realize media player.");
        } //end catch
        catch ( IOException iOException ){
            JOptionPane.showMessageDialog(null, "Error reading from the source.");
        } //end catch
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new VideoFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration

}

非常感谢我能到达这里的任何想法和帮助......:)


尝试添加您的Video and Control组件到你的jPanel1

...
if ( video != null )
 jPanel1.add( video, BorderLayout.CENTER ); //add video component
if ( controls != null )
 jPanel1.add( controls, BorderLayout.SOUTH ); //add controls
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将视频显示到 JPanel 的相关文章

  • 使用 Spring MVC,接受带有错误 JSON 的 POST 请求会导致返回默认的 400 错误代码服务器页面

    我正在开发 REST api 接收带有错误 JSON 的 POST 消息 例如 sdfasdfasdf 会导致 Spring 返回 400 错误请求错误的默认服务器页面 我不想返回页面 我想返回自定义 JSON 错误对象 当使用 Excep
  • 如何使用 Java Swing 创建图像映射?

    我需要使用 Swing 制作一个显示背景图像的图像地图 然后当鼠标悬停在 或单击 特定热点上时 我需要弹出一个 放大 图像并显示它 我正在考虑扩展 JPanel 以包含图像引用并通过 PaintComponent g 方法绘制该图像 到目前
  • Mockito:使用“thenReturn”中的方法返回模拟不起作用

    我遇到了我认为可能是 Mockito 的错误 但想知道是否有其他人可以解释为什么这个测试不起作用 基本上 我有两个对象 如下所示 public class FirstObject private SecondObject secondObj
  • 如何使用appium和java在Android中向下滚动以单击元素?

    我想知道如何使用appium和java向下滚动以单击Android中的元素 我里面有一个元素列表 android support v7 widget RecyclerView由于它有10多个元素 所以我们需要滑动屏幕才能看到下面的元素 每个
  • 使用 Apache Commons File Upload 解析 multipart/form-data

    Apache Commons File Upload 包是否提供了流解析的通用接口multipart form data块通过InputStream 附加Array
  • 从java管理unix进程的最佳方法是什么?

    我正在寻找一些简单的任务 例如列出用户的所有正在运行的进程 或者通过pid等杀死特定进程 来自Java的基本unix进程管理 有没有相对成熟且有文档的库 我可以从 JVM 运行外部命令 然后解析标准输出 错误 但这似乎需要大量工作 而且一点
  • JOOQ初始化DAO最佳方法

    我想知道初始化 JOOQ 生成 DAO 的最佳实践 现在 我使用以下方法来初始化 JOOQ 生成的 DAO 在以下情况下 Student Dao 是 JOOQ 生成的 public class ExtendedStudentDAO exte
  • java中应用程序的CPU核心数和线程数之间有什么关系?

    我是java新手多线程编程 我想到的问题是 根据我的数量 我可以运行多少个线程CPU核心数 如果我运行的线程超过CPU核心数机器运行应用程序会产生开销吗 例如 当我们有一台服务器计算机 其中有一个运行 2 个线程 主线程 开发人员线程 的服
  • 用 Maven 解决 jar 地狱问题?

    我正在使用两个 jars A 和 B B 是一个库 A 的类使用库 B 中的一些旧类 现在 当我将这两个 jars 包含在我的项目类路径中时 这给我带来了一个问题 因为它们的名称相同两个班级 但其中一个班级比另一个班级年长 并且行为方式不同
  • Java 将字符串拆分为单词逗号和句号

    我一直在使用myString split s 得到每个单词 但现在我想把逗号和句号也分开 例如 妈妈总是说生活就像一盒巧克力 你永远不知道会得到什么 to Mama always said life was like a box of ch
  • 是否有更现代的面向对象版本的“让我们构建一个编译器”? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有更现代的 也许是面向对象的 相当于 Jack Crenshaw 的 让我们构建一个编译器 http
  • 在 DAO 中反映继承关系最有效的方法是什么?

    使用 MVC 结构和业务对象 http en wikipedia org wiki Business object DAO http en wikipedia org wiki Data access object建筑学 对于任何正常的业务
  • Java 8 元空间垃圾收集

    我正在运行的 java 进程在运行的第一个小时左右始终表现良好 然而 性能会迅速下降 在分析时 我发现元空间垃圾收集相当频繁地发生 直到小时标记 然后失去控制 我相当确定我能够使用 XX MaxMetaspaceSize 选项来解决此问题
  • 使用Optional进行空检查

    我想使用可选实用程序在 JDK8 中执行空检查 这是我正在编写的代码 它给了我一个错误 java util Optional stringToUse java util Optional of childPage getContentRes
  • ViewCompat.setOnApplyWindowInsetsListener使状态栏颜色消失

    这是我用来检测何时的代码Keyboard Height变化 唯一的问题是Statur Bar当此代码运行时 颜色消失并变为白色 ViewCompat setOnApplyWindowInsetsListener this getWindow
  • Python Blowfish 加密

    由于我对 Java 的了解不完整 我正在努力将此加密代码转换为 Python 代码 两者应该得到完全相同的结果 帮助将不胜感激 Java函数 import javax crypto Cipher import javax crypto sp
  • 在 OpenCV 中将 `BufferedImage` 转换为 `Mat`

    我怎样才能转换BufferedImage to a Mat in OpenCV 我正在使用 JAVA 包装器OpenCV not JavaCV 由于我是新手OpenCV我在理解如何做时遇到一些问题Mat works 我想做这样的事情 基于
  • NoClassDefFound错误:org/apache/tools/ant/util/ReaderInputStream

    我在 Intellij 中有一个带有 gradle 的 java 项目 它直到几个小时前才工作 但在进行微小更改 或者我认为是这样 后突然出现错误 Error gradle resources test analyzer main java
  • 使用 Appengine 进行多线程处理

    既然Appengine不允许java多线程 那么我们如何将现有的多线程代码迁移到该平台呢 例如我有以下代码 Thread t new Thread public boolean alive true public void run whil
  • 从 Eclipse 启动时创建新的 JFrame 时 Java 将关闭。没有抛出异常

    我正在开发一个在 Eclipse 中开发的 Java 项目 直到今天一切都很好 昨天 在完成我的项目之前 我最后一次运行它以检查一切是否正常并且运行正常 但是今天 当我启动该项目并按下 运行 时 我的应用程序就神秘地关闭了 没有崩溃 没有消

随机推荐

  • React-Native 另一个 VirtualizedList 支持的容器

    升级到react native 0 61后 我收到很多这样的警告 VirtualizedLists should never be nested inside plain ScrollViews with the same orientat
  • iOS开发:收到Game Center邀请时,如何获取GKMatch对象?

    我正在构建一款使用 Game Center 的 iPhone 游戏 但我很难理解如何开始一场通过收到朋友的玩邀请而开始的比赛游戏 这docs http developer apple com library ios documentatio
  • 根据给定值构造新的哈希值

    我似乎迷失了尝试实现以下目标 我尝试了一整天 请帮助 I HAVE h kv1001 gt impressions gt b gt 0 245 a gt 0 754 visitors gt b gt 0 288 a gt 0 711 ctr
  • 如何设置java keytool的默认语言?

    我使用带有英语和美式键盘设置的 Windows 操作系统 我使用这个命令来生成密钥库 效果很好 C java6 jre bin keytool genkey keyalg RSA alias mykey validity 3652 keys
  • 如何使用钩子通过一个事件处理函数动态更新任何输入字段的值

    TL DR 有没有一种方法可以通过一个事件动态更新输入字段的值 处理函数就像我们对有状态组件所做的那样 我正在制作一个包含 2 个字段的登录表单 电子邮件和密码 当我使用 2 个 useState 代表两个字段时 当我使用 handleCh
  • R过滤掉一个子集

    我有一个数据框A 和一个包含 A 子集的 data frame B 如何创建一个 data frame C 它是 data frame A 且排除了 data frame B 感谢您的帮助 获取 A 中 B 中没有的行 C A data f
  • 如何在 Eclipse 中从自动构建中排除一个项目?

    如何在 Eclipse 中从自动构建中排除一个项目 我的工作区中有一个项目 该项目可能构建很长 即使没有任何更改 我想保持这个项目打开以浏览源代码 但我不需要它一直在构建 如何禁用该项目的自动构建 这可能是 Eclipse 中的一个错误ht
  • 引发“System.Windows.Forms.AxHost+InvalidActiveXStateException”类型的异常

    我在我的简单项目中遇到错误 这是我的代码 if axZKFPEngX1 InitEngine 0 label1 Text Connected else label1 Text Connection Failed 我已经添加了参考复合材料Ax
  • 从实体框架中删除单个记录?

    我在实体框架中有一个名为的 SQL Server 表employ具有名为的单个键列ID 如何使用实体框架从表中删除单个记录 不必先查询对象 您可以通过其 id 将其附加到上下文 像这样 var employer new Employ Id
  • 如何提取Go内置函数代码,例如delete()

    我在go src go src builtin builtin go 中找到了内置函数 如下 func delete m map Type Type1 key Type 但这不是源代码 谁能告诉我内置函数的源代码在哪里 builtin go
  • 运行 npm 命令时 -- 做什么?

    例如 双破折号或两个连字符 像这样使用 npm test coverage Running npm没有双破折号标志不会在覆盖模式下运行 因此它似乎附加了后续标志 这是正确的吗 我找不到这方面的文档 作为参数本身在所有 UNIX 命令中都是标
  • const 用于非引用参数

    如果我有这个代码 void Foo aBasicType aIn Where aBasicType is int char etc 制作它有什么意义吗const aBasicType因为无论如何它都会被复制 我问的原因之一是因为我在第 3
  • 如何在 Javascript 中正确使用 mixin

    我正在组织一个小型企业应用程序 但希望尽可能干燥 因此 我一直在研究 mixin 库 我遇到了这个library https github com kmalakoff mixin并认为这可能是一个不错的选择 因为它允许您在运行时混合输入和输
  • 如何通过 SQLAlchemy 中的自定义函数进行排序

    所以我有一个 SQLALchemy 模型 如下所示 from sqlalchemy import create engine Column BigInteger String DateTime from sqlalchemy ext dec
  • Gitlab克隆项目:身份验证失败

    我尝试简单地使用 HTTPS 和 SSH 克隆 Gitlab 项目 但它们都不起作用并打印回验证失败的消息 尝试使用 https 地址时 git clone https gitlab com project aa project git C
  • 如何删除 C# WPF 应用程序中的 WebView2 UserDataFolder,BrowserProcessExited 事件不会触发

    我的 C 应用程序使用 WebView2 要求多个实例同时打开 且不共享会话 根据这个WebView2流程 模型解释 https learn microsoft com en us microsoft edge webview2 conce
  • 使用 AWS ELB 连接节点服务器时 Websocket 在闲置 60 秒后关闭

    我有一个节点服务器在 EC2 实例上运行 客户端也在同一个 EC2 实例上运行 客户端打开 websocket 连接来与节点服务器通信 它正在 QA 和 Dev AWS 环境中工作 但相同的 Web 连接在空闲 60 秒后逐渐关闭在 pro
  • 谷歌sheet_query

    我正在尝试使用查询创建动态工作表 ARRAYFORMULA query 1 text Temp A1 A13 MM YYYY Temp B2 E13 select Col1 sum Col5 where Col1 gt C2 AND Col
  • 为什么归档时找不到静态库的头文件?

    我可以很好地进行调试 我已经三次检查静态库是否包含在项目的构建阶段设置中 我还尝试了其他方法 例如标头包含路径等 但均无济于事 当我尝试构建 IPA 进行试飞时 出现错误 import
  • 将视频显示到 JPanel

    我正在创建一个简单的视频播放器 但在 JPanel 中显示要流式传输的视频文件时遇到问题 我创建并设计了一个 JFrame 并将一个正方形大小的 JPanel 放入表单内 到目前为止 这是我的代码 package SoundsTrip im