1

このアプリケーションを作成しています。視覚的な波形を描画するためのさまざまなコンポーネント (オシレーター、エフェクト) があります。コンポーネントのパラメーターを変更するには、GUI のコントロールを使用します。

コントロールの 1 つを操作するときは、関連するコンポーネントを更新してから、出力を再描画する必要があります。

public JPanel createOscPanel(Osc o)
 {
 JPanel cbPanel = new JPanel(); 
 final String[] comboItems = {"Sine", "Custom", "FSaw", "FSquare"};
 JComboBox cb = new JComboBox(comboItems);
 cbPanel.add(cb); 

 cb.addActionListener(this);

 return cbPanel; 
 }

public void actionPerformed(ActionEvent e) {
    JComboBox cb = (JComboBox)e.getSource();
    int value = cb.getSelectedIndex();

    System.out.println(value); 
} 

setWaveType()この例では、そのオシレータを渡してメソッドを 実行するにはどうすればよいでしょうか?

4

2 に答える 2

2

匿名ハンドラを作成し、 のパラメータを変更しますcreateOscPanel

public JPanel createOscPanel(final Osc o)
 {
   JPanel cbPanel = new JPanel(); 
   final String[] comboItems = {"Sine", "Custom", "FSaw", "FSquare"};
   JComboBox cb = new JComboBox(comboItems);
   cbPanel.add(cb); 

   cb.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e) {
           JComboBox cb = (JComboBox)e.getSource();
           int value = cb.getSelectedIndex();
           o.setWaveType();
           System.out.println(value); 
      } 
    });
  return cbPanel; 
 }
于 2012-09-16T07:40:04.643 に答える
0

インスタンス/メンバー変数として保持すると、そのクラス内の任意のメソッドからアクセスできます。

于 2012-09-16T07:35:28.097 に答える