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();
}
}
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();
}
}
不要在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);
}
}
panel.setBackground(Color.WHITE);//这里设置背景色
这设置背景不行;setBackground(new Color(204, 204, 255));
在这设置倒是管用!