import java.awt.*;
import java.awt.event.*;
import java.util.*;import javax.swing.JFrame;public class MyMouseAdapter {
public static void main(String args[]) {
MyFrame mf = new MyFrame("drawing...");
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}class MyFrame extends JFrame {
ArrayList points = null; MyFrame(String s) {
super(s);
points = new ArrayList(); setLayout(null);
setBounds(300, 300, 400, 300);
setBackground(new Color(204, 204, 255));
setVisible(true);
addMouseListener(new Monitor());

} 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 Monitor extends MouseAdapter {
public void mousePressed(MouseEvent e) {
MyFrame f = (MyFrame) e.getSource();
f.addPoint(new Point(e.getX(), e.getY()));
f.repaint();
}
}

解决方案 »

  1.   

    对frame设置背景后没有效果吧?我写了一个简单的frame,设置背景后什么变化都没有,你可以定义个panel,对它设置背景就可以了。我也初学,希望共同进步
      

  2.   

    写Swing程序~
    不要在JFrame上直接重绘
    你如果想重绘,
    可以在JFrame的Container上放一个JPanel
    然后在这个JPanel上重绘
    程序改了下,变成这样:
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;import javax.swing.JFrame;
    import javax.swing.JPanel;public class MyMouseAdapter {
    public static void main(String args[]) {
    new MyFrame("drawing...");
    }
    }class MyFrame extends JFrame {
    private MyPanel panel = new MyPanel(); MyFrame(String s) {
    super(s);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(null);
    setBounds(300, 300, 400, 300);
    setBackground(new Color(204, 204, 255));
    setContentPane(panel);
    panel.setBackground(Color.WHITE);//这里设置背景色
    setVisible(true);
    }
    }class MyPanel extends JPanel {
    ArrayList points = new ArrayList();

    MyPanel() {
    super();
    addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
    addPoint(new Point(e.getX(), e.getY()));
    repaint();
    }
    });
    } @Override
    protected void paintComponent(Graphics g) {
    super.paintComponent(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);
    }
    }
      

  3.   

    不对啊,
    panel.setBackground(Color.WHITE);//这里设置背景色
    这设置背景不行;setBackground(new Color(204, 204, 255));
    在这设置倒是管用!
      

  4.   

    有什么不行的,这可是Colop类里定义的常量啊。