gpt4 book ai didi

java - JSlider 旋钮不会随着视频的播放而更新

转载 作者:行者123 更新时间:2023-12-01 14:21:31 24 4
gpt4 key购买 nike

这是我更新 jslider 的代码

    try{
name=(String) jList1.getSelectedValue();
CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas1);
mediaPlayer.setVideoSurface(videoSurface);
mediaPlayer.setAdjustVideo(true);
mediaPlayer.playMedia(name+".mp4");
mediaPlayer.setVolume(jSlider1.getMinimum());
mediaPlayer.parseMedia();
time = (int)(mediaPlayer.getMediaMeta().getLength()/1000);
jSlider2.setMaximum(time);
while(jSlider2.getValue()<jSlider2.getMaximum())
{
jSlider2.setValue((int) this.mediaPlayer.getTime()/1000);
}
}
catch(Exception e)
{
e.printStackTrace();
}

对于 slider 状态的更改,这是代码

 private void jSlider2StateChanged(javax.swing.event.ChangeEvent evt)
{
mediaPlayer.setTime((long) this.jSlider2.getValue());
}

但它不会改变 nob 的位置,事实上它一直从头开始播放。我认为原因是 setTime() 函数在 jslider 可以获取新值之前不断更新为 0。有什么解决方案吗?也许使用线程??谢谢!!

最佳答案

使用此代码:

while(jSlider2.getValue() < jSlider2.getMaximum())
{
jSlider2.setValue((int) this.mediaPlayer.getTime()/1000);
}

您正在 Swing Event Dispatch Thread 或 EDT 上调用长时间运行的循环,这将卡住您的GUI 阻止所有绘画。考虑在 SwingWorker 的 doInBackground 方法中运行后台进程,然后通过 SwingWorker 的发布/处理方法对更新 GUI。另外,如果您要轮询媒体播放器,请考虑输入 Thread.sleep(/* some number */)在轮询循环内,因为几乎连续轮询是没有意义的。

有关此内容的更多信息,请查看 Concurrency in Swing .

关于java - JSlider 旋钮不会随着视频的播放而更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511831/

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