2009-11-24 281 views
0

我正在使用Swing实现Java音乐播放器的GUI。我想知道是否有可能在WinAmp中创建一个时间栏,例如可以将它移动到歌曲中的某个位置并显示当前位置。如果可能的话,会怎么做呢?Java音乐播放器GUI

此外,我使用JList来显示播放列表,我想知道如何获得双击事件。我知道有选择事件,但我希望选择列表中的对象,并在双击时开始播放,而不是单击。我也想让他们只被选中一次,所以这个事件不会被连续调用。

谢谢。

+0

JavaFX有很多音乐播放器的例子。也许JavaFX将是比Swing更好的选择。 – 2009-11-24 08:01:16

+0

无论如何JavaFX没有映射到Swing组件,只是提供了一个更好的方式来定义UI? – Joey 2009-11-25 13:00:48

回答

1

您当然可以创建这样的控件。你可能想要分类JSlider并相应地调整它。您可以简单地覆盖paintComponent方法以适应外观,但它可能在几分钟内不会完成。您可能还想要在滑块上处理鼠标点击,因为我认为通常单击滑块的右侧或左侧会导致滑块按特定间隔跳跃,而不是直接跳到单击位置。

至于双击,只需使用您覆盖的mouseClicked方法MouseListenerMouseEvent有一个名为getClickCount的方法,您可以选中2进行双击。

我不太确定你的意思是“只选择一次”。我在这里猜测,但JList触发两个为每次点击选择“事件”:一次按下鼠标按钮,另一次释放。有时候这很烦人,特别是如果你在选择时更加昂贵。

+0

谢谢。我会牢记这一点。 我知道的是,JList有一个ListSelectionListener,它记录列表上的哪个项目被选中。我只希望在用户双击该项目时选择一个项目,并且我不希望它持续启动处理程序方法(这意味着我不希望歌曲继续停止并播放,我希望它停止一次并开始播放一次新选择的歌曲)。 谢谢。 – GLRockwell 2009-11-24 07:02:07

+0

那么你显然需要自己处理列表选择。我目前还不确定是否应该对JList或ListSelectionModel进行子类化,但其中的一个应该是答案(如果每个问题都需要子类化* sigh *,则Java很奇怪)。但是,大多数音乐播放器的工作方式不同:它们将*选择*与实际播放的内容分开。所以你可能只想在双击时播放歌曲,而不是使用选择“事件”。这样您就可以选择其他歌曲而不影响播放的内容。 – Joey 2009-11-24 07:13:02