高效的动态生成javagui

高效的动态生成javagui,java,user-interface,Java,User Interface,我正在构建一个类似Java SingStar的应用程序,我需要一些帮助,因为我对Java Swing不是很有经验,尽管我有关于布局等的基本知识 我的意图如下: 打开一个Midi文件 读笔记 生成显示此数据的GUI 在播放时不断替换GUI 我想到(并且做过)的是创建一个表示Midi数据的BuffereImage。例如,我有一个MidiLength x ScreenHeight BuffereImage(通常为1024 x>10.000),我在读取midi数据时动态填充它。然后我显示BuffereI

我正在构建一个类似Java SingStar的应用程序,我需要一些帮助,因为我对Java Swing不是很有经验,尽管我有关于布局等的基本知识

我的意图如下:

  • 打开一个Midi文件
  • 读笔记
  • 生成显示此数据的GUI
  • 在播放时不断替换GUI
  • 我想到(并且做过)的是创建一个表示Midi数据的BuffereImage。例如,我有一个MidiLength x ScreenHeight BuffereImage(通常为1024 x>10.000),我在读取midi数据时动态填充它。然后我显示BuffereImage的第一个屏幕宽度x屏幕高度部分,当用户开始播放时,我每5毫秒更新一次BuffereImage子图像x开始坐标。通过这种方式,我成功地实现了我所追求的目标

    我发布了一个图形用户界面的图片,这样你就可以更好地了解我在说什么

    问题是,根据Midi的长度,这个内部BuffereImage可能会非常大,因此需要占用大量RAM,但我想不出其他方法来实现这一点

    任何想法都将不胜感激


    提前谢谢你

    您只需编写一个自定义Swing组件,然后在
    paintComponent(Graphics)
    方法,而不是生成图像


    检查以加快处理速度。

    你不能“流”缓冲图像,使其仅使用ram处理屏幕上的内容吗?问题是,我需要“动态”生成图像,并且图像非常动态(每隔几毫秒更改一次)。我可以生成固定大小的图像窗口(例如1024x4000),并生成下一个“动态”窗口。但我想考虑其他解决方案,如果它存在的话,因为我不想用GUI来强调CPU,因为我将使用一个很好的百分比来执行不同的计算。无论如何,非常感谢您的回答,如果没有其他解决方案,我会实现这个。您不能创建自己的JPanel并动态绘制它吗?这是最简单的方法。。。从您的屏幕截图中,我想说这将非常简单,而且速度快,内存效率高…如果用户调整窗口大小会发生什么情况?BuffereImage将缩放以适应原始用户窗口。如果原来的1024x768和屏幕大小是1280x1024,那么1024x768将被缩放到1280x1024。感谢Hakan,我将尝试实现这个“动态计算GUI”解决方案。但是我预计会有一些不希望的CPU使用,因为我必须读取每个“midi”位置,让我们再说一遍,5ms,然后意识到需要在屏幕上显示什么并绘制它。无论如何,我会在这里张贴任何结果,我得到!让我们拭目以待结果:)