当前位置: 首页 > 知识库问答 >
问题:

在Swing应用程序中使用JavaFX Media和Media Player有什么解决方法吗?[重复]

锺威
2023-03-14

我目前正在Java上制作一个MP3播放器,如果可能的话,我想专门使用摇摆图形用户界面元素。但是我也需要JavaFX中的媒体和媒体播放器类的功能。有没有一种方法可以在我的应用程序中实例化这些逻辑元素,而不需要场景制作之类的麻烦?老实说,我对它们知之甚少,而且我似乎不能非常清楚地理解关于它的甲骨文教程。这是我将使用这些项目的地方:(稍后我将这个类称为主类)

    class MP3Panel extends JFrame
    {
        private Media playingnow;
        private MediaPlayer player;

        public MP3Panel()
        {
            player = new MediaPlayer(intoMedia(playlist.getFirstSong()));

            player.setOnEndOfMedia(new Runnable() {

        @Override
        public void run() {
            if(playlist.nextSong(thissong)==null)
            {   player.stop();
                nowplaying.setText("");
            }    
            else
            {    
                player = new MediaPlayer(intoMedia(playlist.nextSong(thissong)));
                nowplaying.setText(thissong.printSongInfo());
                player.play();
            }    
        }
    }

    );

    ...
    private Media intoMedia(Song a)
    {

    thissong = a; 
    thisfile = new File(thissong.getFilename());
    thisURI = thisfile.toURI().toString();
    playingnow = new Media(thisURI);
    return playingnow;
    }

我也将这些用于 ActionManager 类:

    private class ActionManager implements ActionListener
{    
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == playbtn)
        {

            if(playbtn.getIcon() == play)
            {
                if(player.getStatus()==MediaPlayer.Status.STOPPED)
                {
                    player = new MediaPlayer(intoMedia(playlist.getFirstSong()));
                    nowplaying.setText(thissong.printSongInfo());
                }
                player.play();
                playbtn.setIcon(pause);
            }
            else
            {
                player.pause();
                playbtn.setIcon(play);
            }
        }
        if(e.getSource() == fwdbtn)
        {
            if(playlist.nextSong(thissong) == null)
            {    
                player.stop();
                playbtn.setIcon(play);
            }
            else
            {
                player = new MediaPlayer(intoMedia(playlist.nextSong(thissong)));
                nowplaying.setText(thissong.printSongInfo());
                player.play();
                playbtn.setIcon(pause);
            }
        }

还有一个后退和前进按钮,但我认为这足以澄清我的困境。提前感谢。

共有1个答案

左恺
2023-03-14

是的,您可以使用JFXPanel将任何JavaFX用户界面嵌入到Swing应用程序中,这是一个可以显示JavaFX-Scene的Swing组件。

但如果没有JavaFX场景图,您将无法做到这一点。

看看有关此主题的orOracle教程。如果您不熟悉javafx场景图,您可能应该阅读JavaFX入门教程。

 类似资料:
  • 问题内容: 我正在开发Java Swing应用程序,但也希望将JavaFX与Swing一起使用。是否有任何资源可以告诉您如何执行此操作? 问题答案: 看这里。简而言之,现在可以将JavaFX嵌入到Swing中,并且可以通过JFXPanel支持,但是不支持其他方向。

  • 问题内容: Swing应用程序现在真的被使用吗?我找不到使用它们的地方。可以跳过AWT和Swing包吗(尽管我学到了一些基础知识)? 问题答案: 如果您是专门为Web编写的,则可以跳过Swing,否则,您肯定会碰上它。如果没有Swing GUI,我从来没有在非平凡的Java应用程序上工作过。 另外,Swing是更好使用的API之一。如果您使用大多数其他工具,则会发现它们更加难以使用和/或与平台不兼

  • 问题内容: 我有一个传统的Java swing应用程序(扩展了JFrame并具有一个主类),该应用程序使用JFreeCharts来实现某些图表功能。我最近看过JavaFX,并认为这些图表看上去很新鲜,可以为我的用户带来更好的体验。我希望将JavaFX图表场景嵌入到jInternalFrame中(依次从我的jDesktopPane中调用它)。 我遵循了有关如何创建javafx应用程序和javafx图

  • 问题内容: 我有一个Swing应用程序,我希望将其从意大利面条转换为对Guice使用依赖项注入。使用Guice提供诸如配置和任务队列之类的服务的过程非常好,但是我现在是从应用程序的GUI开始的,不确定如何进行。 该应用程序基本上是,在中带有一堆标签。每个选项卡都是一个单独的子类,该子类列出了各种组件,并且需要服务才能在按下某些按钮时执行操作。 在当前应用程序中,这看起来像这样: 显然,这并不完全遵

  • 本文向大家介绍你有在vue中使用过worker吗?用它解决什么问题?相关面试题,主要包含被问及你有在vue中使用过worker吗?用它解决什么问题?时的应答技巧和注意事项,需要的朋友参考一下 你有在vue中使用过worker吗?用它解决什么问题?

  • 我尝试了开发人员为同一问题提供的所有解决方案。我像这样更新了 Vite.config.js 文件—— 我在两个文件中都添加了标头属性- 但是,当我检查代码并在网络标头属性下看到时- 如何更改这些标头属性或任何其他方法来解决此 CORS 问题。我只想解决前端问题。目前,我正在通过禁用安全 chrome 在 Chrome 中运行此应用程序.exe --user-data-dir=“C://Chrome

  • 问题内容: 我通过阅读一些博客和介绍材料开始使用docker。 我的理解是docker可以将单个应用程序包装到标准化容器中。容器提供了一个沙箱,应用程序需要运行的所有必需资源,并且内部的应用程序始终位于该容器中。这意味着我可以将容器运送到任何地方(不同类型的OS甚至是云平台),并且仍然可以正确运行。 如果我的理解是正确的,那是否意味着微软可以将其办公服包装到一个容器中,并且可以在mac os或li

  • 问题内容: 看起来苹果已经弃用了我的应用正在使用的api。不知道如何解决此问题。具体用法可以在这里看到: http://code.google.com/p/jarzilla/source/browse/trunk/jarzilla/src/main/java/com/googlecode/jarzilla/Jarzilla.java#192 问题答案: 好的,经过一番谷歌搜索后,我得到了API文档