使用vlcj和java: 在A类中创建B类(EmbeddedMediaPlayerComponent类)的实例:
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
通过B级打开:new JFrame
,ebedded mediaPlayer
。
我可以用以下内容销毁这个'JFrame'。
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent windowEvent) {
stillAlive = false;
release(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public boolean stillAlive() {
return stillAlive;
}
但是如果我尝试重用mediaPlayerComponent
mediaPlayerComponent
仍然存在并引发丑陋的错误
所以,如果我想播放一个新文件,我会这样做。
检查它是否是第一次打开实例和
检查我是否通过release(true)
进行了stillAlive = false
。
否则重用mediaPlayerComponent。
if (mediaPlayerComponent == null || (! mediaPlayerComponent.stillAlive())) { // keine facory
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
mediaPlayerComponent.getMediaPlayer().prepareMedia(marked.getPath());
mediaPlayerComponent.getMediaPlayer().play();
} else {
mediaPlayerComponent.getMediaPlayer().prepareMedia(marked.getPath());
mediaPlayerComponent.getMediaPlayer().play();
}
有更好的方法吗?就像告诉A类设置mediaPlayerComponent = null
一样。
它以某种方式接缝是一个糟糕的编码阶梯来携带这个布尔值。