给你一个例子
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Test extends JFrame{
  private JTextField txtDisplay;
  private JButton btnChoose,btnExit;
  public Test(){
    Container c=getContentPane();
    c.setLayout(new FlowLayout());    ActionHandler handler=new ActionHandler();    txtDisplay=new JTextField(20);
    btnChoose=new JButton("选择颜色");
    btnChoose.addActionListener(handler);
    btnExit=new JButton("退出");
    btnExit.addActionListener(handler);    c.add(txtDisplay);
    c.add(btnChoose);
    c.add(btnExit);    setSize(300,300);
    show();
  }  private class ActionHandler implements ActionListener{
    private Color c=Color.red;    public void actionPerformed(ActionEvent e){
      if(e.getSource()==btnExit)
        System.exit(0);
      if(e.getSource()==btnChoose){
        c=JColorChooser.showDialog(Test.this,"选择颜色",c);
        if(c==null)
          c=Color.blue;        txtDisplay.setForeground(c);
      }
    }
  }
  public static void main(String args[]){
    Test app=new Test();
    app.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        System.exit(0);
      }
     }
    );
  }
}

解决方案 »

  1.   


    我遇到的问题是:
    有a,b两个控件,c,d两个listener,c监听a,d监听b。
    现在a上有某个事件发生,c监听到该事件,c发一条消息通知d该事件发生,d再触发对b的某个操作。
    这个问题的一种解决方式就是去掉b的listener(d),由c来实现b上的操作,这个我会。之前的那个方案大家能不能帮我想想?