你的監聽器沒有問題﹐有問題的是這里      if(source==blueButton)getContentPane().setBackground(Color.blue);
      else if(source==redButton)getContentPane().setBackground(Color.red);
改變的是contentPane的color﹐改了你也看不見。
首先你要把panel聲明為類變量
  JButton blueButton=new JButton("Blue");
  JButton redButton=new JButton("Red");
  JPanel panel=new JPanel(new FlowLayout());在監聽器中改為
if(source==blueButton) panel.setBackground(Color.blue);
      else if(source==redButton) panel.setBackground(Color.red);
即可

解决方案 »

  1.   

    沒有吧﹐我也試了﹐可是成功了啊﹗import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class ListenTest extends JFrame{
      JButton blueButton=new JButton("Blue");
      JButton redButton=new JButton("Red");
      JPanel panel=new JPanel(new FlowLayout());
      public ListenTest(){
        getContentPane().add(panel);
        panel.add(blueButton);
        panel.add(redButton);
        ColorHandler colorHandler=new ColorHandler();
        blueButton.addActionListener(colorHandler);
        redButton.addActionListener(colorHandler);
        addWindowListener(new WindowHandler());
        setBounds(200,200,200,200);
        setVisible(true);
      }
      class WindowHandler extends WindowAdapter{
        public void windowClosing(WindowEvent e){
          dispose();
          System.exit(0);
        }
      }
      class ColorHandler implements ActionListener{
        public void actionPerformed(ActionEvent e){
          Object source=e.getSource();
          if(source==blueButton) panel.setBackground(Color.blue);
          else if(source==redButton) panel.setBackground(Color.green);// .setBackground(Color.red);
        }
      }
      public static void main(String[] args){
        new ListenTest();
      }
    }