这个程序可以关闭,怎么设置背景颜色???显示出来却是透明的..
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.*;import sun.awt.geom.AreaOp.AddOp;
import java.awt.*;
public class 画图 
{ public static void main(String[] args)
{
new MyFrame("stringfd"); }}class MyFrame extends JFrame
{
ArrayList points=null;
MyFrame (String s)
{
super(s);
points=new ArrayList(); 
setLayout(null);
setBounds(100, 100,200,200);
setBackground(new Color(204,204,255));
setVisible(true);
this.addMouseListener(new Mou());
}
public void paint(Graphics g)
{
Iterator i =points.iterator();
while (i.hasNext())
{
Point p =(Point)i.next();
g.setColor(Color.blue);
g.fillOval(p.x,p.y,10,10);

}
}
public void addPoint(Point p)
{
points.add(p);
}
}class Mou extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
MyFrame f =(MyFrame)e.getSource();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.addPoint(new Point(e.getX(),e.getY()));
f.repaint();
}
}

解决方案 »

  1.   

    public void paint(Graphics g) {
    super.paint(g);
    Iterator i = points.iterator();
    while (i.hasNext()) {
    Point p = (Point) i.next();
    g.setColor(Color.blue);
    g.fillOval(p.x, p.y, 10, 10); }
    }在paint函数第一行加super.paint(g); 先调用父类的paint初始工作
      

  2.   

    //setBackground(new Color(204, 204, 255));
    getContentPane().setBackground(new Color(204, 204, 255));   //修改了这一句...

    在加上楼上这一句,
    super.paint(g); 背景颜色  ==>可以显示出来import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Point;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.ArrayList;
    import java.util.Iterator;import javax.swing.JFrame;public class 画图 { public static void main(String[] args) {
    new MyFrame("stringfd"); }}class MyFrame extends JFrame {
    ArrayList points = null; MyFrame(String s) {
    super(s);
    points = new ArrayList();
    setLayout(null);
    setBounds(100, 100, 200, 200);

    //setBackground(new Color(204, 204, 255));
    getContentPane().setBackground(new Color(204, 204, 255));   //修改了这一句...

    setVisible(true);
    this.addMouseListener(new Mou());
    } public void paint(Graphics g) {
    super.paint(g);
    Iterator i = points.iterator();
    while (i.hasNext()) {
    Point p = (Point) i.next();
    g.setColor(Color.blue);
    g.fillOval(p.x, p.y, 10, 10);
    }
    } public void addPoint(Point p) {
    points.add(p);
    }
    }class Mou extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
    MyFrame f = (MyFrame) e.getSource();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.addPoint(new Point(e.getX(), e.getY()));
    f.repaint();
    }
    }
      

  3.   

    public
      

  4.   

    setBackground(new Color(204,204,255));
    改为
    getContentPane().setBackground(new Color(204,204,255));
      

  5.   

    另外如果窗体继承自 JFrame,不要覆盖它的 paint 方法(因为 JFrame 要利用此方法完成自己内部的组件的绘制,如果使用 Frame 没问题),最好自己写个组件,覆盖自己组件的 paint 方法绘制自己的图像,最后将这个组件添加到 JFrame 中。