2012-09-16 120 views
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()方法?

回答

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; 
} 
0

將其作爲實例/成員變量保存,您可以從該類中的任何方法訪問它。