要实现一个功能:
combo1:                    combo2:                            text1                text2
1                            10                                 1
                             20                                 2
------------------------------------------------------------------------------------------                                      
2                            30                                                      3  
                             40                                                      4
 
即 COMBO1 选1时,COMBO2可选10,20,同时TEXT1 分别输出1,2;
COMBO1 选2时,COMBO2可选30,40,同时TEXT2 分别输出3,4。问题是我在 COMBO1=1 时,COMBO2下用一个 ADDSELECTIONLISTENER 事件触发,同时输出 TEXT1,
在 COMBO1=2 时,又在COMBO2下用了一个 ADDSELECTIONLISTENER 事件触发,同时输出TEXT2,编译通过, 结果不管在COMBO2中选的是10,20还是另一种情况下的30,40,都同时在TEXT1,TEXT2中输出两个数字。我知道肯定是定义的ADDSELECTIONLISTENER在触发时把两个触发事件一起实现了,虽然我插在不同的判断语句下,但函数名一样,可能就是这原因了。上网查了半天,自己看书找了半天也没有找到有关事件监听函数重复的问题,从下午弄到现在还是没解决,只好来请教下了,希望有人知道的能帮忙解答下。

解决方案 »

  1.   

    这种情况你可以使用swing特有的action来绑定到某个component,这样就不会混淆了,他们的关系是这样的:每个component  对应一个action接口或abstractaction的实现。很好用的。
      

  2.   

    combo1.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(final SelectionEvent e) {
    combo2.removeAll();
    switch(combo1.getSelectionIndex()){
    case 0:
    combo2.setItems(new String[] {"10", "20"});
    combo2.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(final SelectionEvent e) {
    switch(combo2.getSelectionIndex()){
    case 0:
                                                                    text2.setText("");
    eram=(float) 1;
    text1.setText(String.valueOf(eram));
    break;
    case 1:
                                                                    text2.setText("");
    eram=(float)2;
    text1.setText(String.valueOf(eram));
    break;
    }

    }
    });
    break;
    case 1:
    combo2.setItems(new String[] {"30", "40"});
    combo2.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(final SelectionEvent e) {
    switch(combo2.getSelectionIndex()){
    case 0:
    text1.setText("");
    eram=(float) 3;
    text2.setText(String.valueOf(eram));
    break;
    case 1:
    text1.setText("");
    eram=(float)4;
    text2.setText(String.valueOf(eram));
    break;
    }
    }
    });
    break; }
    }
    });
    上面的代码怎么改才能分别绑定?谢谢了.