1

我正在创建这个应用程序,它有各种组件(振荡器、效果)来绘制可视波形。您可以使用 GUI 上的控件来更改组件参数。

当您与其中一个控件交互时,我需要更新关联的组件,然后重绘输出。

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 回答