gpt4 book ai didi

java - 如何才能让 vlcj 播放器不占用所有空间?

转载 作者:行者123 更新时间:2023-11-30 03:19:03 37 4
gpt4 key购买 nike

我正在编写一个小型 Swing 程序,其中涉及在界面中嵌入视频播放器。为了实现这一目标,我使用了 vlcj。

虽然 GUI 本身还有更多组件,但这里是一个模拟代码结构:

import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import javax.swing.*;
import java.awt.*;

public class MyTestClass extends JFrame {
public MyTestClass(){
EmbeddedMediaPlayerComponent playerCmpt =
new EmbeddedMediaPlayerComponent();
playerCmpt.setPreferredSize(new Dimension(200, 100));

JPanel leftPane = new JPanel();
leftPane.setPreferredSize(new Dimension(100, 100));

JSplitPane mainSplit = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT,
leftPane, playerCmpt);

this.add(mainSplit);
this.pack();
this.setVisible(true);
}

public static void main(String[] args){
new MyTestClass();
}
}

(我单独尝试了这段代码,并且遇到了与 GUI 中相同的问题)

基本上,该窗口有两部分:一个左面板,在其中显示一些数据,以及一个右面板,在其中嵌入视频。这些面板被放在 JSplitPane 中,以便允许用户为播放器分配他想要的空间量(因此,为视频本身分配空间量)。首先,组件的宽度分别为 100 和 200 像素。

问题是:EmbeddedMediaPlayerComponent 变得有点太舒服了。虽然我已将其设置为 200x100 的首选尺寸,但一旦移动垂直分割,它就拒绝缩小。也就是说,我无法使播放器的宽度低于 200 像素,并且一旦放大它,我就无法将其恢复到 200 像素...设置最大尺寸不会改变任何内容。这个小问题很烦人,因为它迫使我的左侧面板一次又一次缩小,直到它几乎看不见。

当用户尝试调整组件大小时,有什么方法可以让媒体播放器遵循 JSplitPane 设置的约束吗?如果有什么用的话,左 Pane 在我的应用程序中包含一个 JTree,它也会被玩家压碎。

最佳答案

这个对我有用。只需改进代码以适合您的目的即可。

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import java.awt.*;
import javax.swing.*;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;


public class MyTestClass extends JFrame {

public MyTestClass() {
String vlcPath = "C:\\Program Files (x86)\\VideoLAN\\VLC";

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcPath);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

EmbeddedMediaPlayerComponent playerCmpt = new EmbeddedMediaPlayerComponent();
playerCmpt.setPreferredSize(new Dimension(200, 100));

JPanel leftPane = new JPanel();
leftPane.setPreferredSize(new Dimension(100, 100));

JPanel playerPanel = new JPanel(new BorderLayout());
playerPanel.add(playerCmpt);

JSplitPane mainSplit = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT,
leftPane, playerPanel);

playerPanel.setMinimumSize(new Dimension(10, 10));

this.add(mainSplit);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {
new MyTestClass();
}
}

关于java - 如何才能让 vlcj 播放器不占用所有空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793219/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com