我们正在尝试使用各种放大器显示已经从电吉他录制的输入音频信号。我们正在寻找一种用 Java 显示的算法。
我们目前正在研究 AWT 和 Swing 库,并且想知道:哪个更适合图形或视觉显示?
你会被允许使用 JavaFx 吗?我问的原因是 JavaFx 2.0 有一些专门为这类多媒体任务设计的优秀 api。这对于 swing 或 awt 是可行的,但为什么不善待自己呢?我没有时间或空间在这里深入探讨它,但我推荐 Apress 的“Javafx 2.0 简介”或“Pro JavaFx 2.0”。我会说第二个更好,更全面。我相信两者都有示例代码,几乎可以完成您刚才描述的操作。
祝你好运!!
为此,请使用 Swing 而不是 AWT。两者都可以,但 Swing 更现代,支持 AWT API 中缺少的组件(JTree
、JTable
..)和功能(内置双缓冲、键绑定、PLAF、支持富文本)。
使用 Swing 的另一个优点是,您似乎正处于需要进一步提问的阶段。大多数使用 Java SE 编写 GUI 的人从未使用过 AWT 组件,而我们其他人大多都忘记了如何使用!(在这一点上,可以帮助 Swing 的人比 JavaFX 多得多。)
在 AWT 中,您可以使用 aCanvas
来绘制波形,但在 Swing 中,您可以使用以下任一方法:
JPanel
(或有时是JComponent
)我们覆盖的绘制位置paintComponent(Graphics)
BufferedImage
显示器JLabel
。你可以在 DrewTubeish 看到第一种技术的例子——这里是Leftover Wine。
JFreeChart
包括各种合适的图表;这里有一个时域示例。这KineticModel
扩展JLabel
并实施Icon
以显示频域Histogram
。两者都不需要Swing,但在 Swing 上下文中都可以更好地工作。
我在音频领域的主要项目中使用过 AWT、Swing 和 JavaFX,包括波形绘制和编辑。以下是我的想法: