你的監聽器沒有問題﹐有問題的是這里 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);
即可
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);
即可
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();
}
}