java点击按钮换背景颜色?

创建一个AWT面板,该面板包含3个不同颜色名称的按钮,单击每个按钮时应使窗口的背景色显示为相应的颜色。
import java.awt.*;
import java.awt.event.*;
public class Changecolor extends MouseAdapter {
public static void main(String args[]){
Changecolor ct=new Changecolor();
ct.init();

}

public void init(){
Frame f=new Frame();
f.setLayout(new FlowLayout());
Panel P1=new Panel();
Panel P2=new Panel();
Panel P3=new Panel();
Button b1=new Button("红色");
Button b2=new Button("蓝色");
Button b3=new Button("黄色");
f.add(b1);
f.add(b2);
f.add(b3);
P1.setBackground(Color.red);
P2.setBackground(Color.blue);
P3.setBackground(Color.yellow);
P1.addMouseListener(this);
P2.addMouseListener(this);
P3.addMouseListener(this);
f.setSize(300,300);
f.setVisible(true);
public void mousePressed(MouseEvent e2){
if(e2.getSource()==b1)
f.add(P1);
if(e2.getSource()==b2)
f.add(P2);
if(e2.getSource()==b3)
f.add(P3);
}
}
不能通过编译 ,高手指教!

第1个回答  推荐于2016-10-24
改了一下:
package method2;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Changecolor extends MouseAdapter {

    Frame f = new Frame();//f应声明为属性,才能在mousePressed()中可见
    Panel P1 = new Panel();//P1应声明为属性,才能在mousePressed()中可见
    Panel P2 = new Panel();//P2应声明为属性,才能在mousePressed()中可见
    Panel P3 = new Panel();//P3应声明为属性,才能在mousePressed()中可见
    Button b1 = new Button("红色");//b1应声明为属性,才能在mousePressed()中可见
    Button b2 = new Button("蓝色");//b2应声明为属性,才能在mousePressed()中可见
    Button b3 = new Button("黄色");//b3应声明为属性,才能在mousePressed()中可见
    public static void main(String args[]) {
        Changecolor ct = new Changecolor();
        ct.init();
    }

    public void init() {
//        Frame f = new Frame();
        f.setLayout(new FlowLayout());
//        Panel P1 = new Panel();
//        Panel P2 = new Panel();
//        Panel P3 = new Panel();
//        Button b1 = new Button("红色");
//        Button b2 = new Button("蓝色");
//        Button b3 = new Button("黄色");
        f.add(b1);
        f.add(b2);
        f.add(b3);
        P1.setBackground(Color.red);
        P2.setBackground(Color.blue);
        P3.setBackground(Color.yellow);
        P1.setVisible(true);
        P2.setVisible(true);
        P3.setVisible(true);
        b1.addMouseListener(this);
        b2.addMouseListener(this);
        b3.addMouseListener(this);
        f.setSize(300, 300);
        f.setVisible(true);
    }//缺了个括号
    public void mousePressed(MouseEvent e2) {
        if (e2.getSource() == b1) {//b1应声明为属性才可见
            f.setBackground(Color.red);//f应声明为属性才可见。源代码f.add(P1);给f添加一个背景色为红色的Panel;根据原意,应设置f的背景色为红色
        }
        if (e2.getSource() == b2) {//b2应声明为属性才可见
            f.add(P2);//f应声明为属性才可见
            f.doLayout();//要让添加的组件起作用,应该再调用doLayout()方法,因为f的layout变了
        }
        if (e2.getSource() == b3) {//b3应声明为属性才可见
            f.add(P3);
            f.doLayout();//要让添加的组件起作用,应该再调用doLayout()方法,因为f的layout变了
        }
    }
}本回答被提问者采纳
相似回答