什么JFrame对象支持音高变化?

时间:2013-12-14 15:39:11

标签: java swing jframe javasound javax.sound.sampled

我正在尝试在鼠标输入JButton时更改波形文件的音高。 问题是JButton对象不支持SAMPLE_RATE控件。 我该怎么做才能改变音高?

(FloatControl.Type.SAMPLE_RATE)

1 个答案:

答案 0 :(得分:1)

JButtons当然永远不会支持任意功能,例如它们 - 它们只能做和理解JButton相关的概念,这应该是它应该的。但一切都不会丢失。您可以为JButton的ButtonModel提供一个ChangeListener,然后当鼠标悬停在按钮上时,调用采样率会改变控制采样率的任何对象。请注意,在ChangeListener中,您将检查isRollover()方法以检查是否悬停。

如,

  button.getModel().addChangeListener(new ChangeListener() {

     @Override
     public void stateChanged(ChangeEvent cEvt) {
        ButtonModel model = (ButtonModel) cEvt.getSource();
        if (model.isRollover()) {
           // do something with pitch
        } else {
           // undo something with pitch
        }
     }
  });

请注意,您可能需要在Swing的事件线程的后台线程中进行音高修改。

相关问题