日期:2014-05-20  浏览次数:20750 次

java绘图 如何实现边画边显示?
下面是偶代码,但不能边画边显示(⊙o⊙)…
怎么改????

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;

public class myDrawFrame extends JFrame
{
public static void main(String[] args)
{
myDrawFrame frame = new myDrawFrame();
myDrawPad draw = new myDrawPad();
frame.setBounds(0, 0, 500, 500);
frame.add(draw);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

class myDrawPad extends JPanel implements MouseListener, MouseMotionListener
{
Vector pointInfo = new Vector();
Point point = new Point(0, 0,  Color.BLACK);
Point p1 = new Point(0, 0, Color.BLACK);
Point p2 = new Point(0, 0, Color.BLACK);
private int mouseX = 0;
private int mouseY = 0;
myDrawPad()
{
PaintThread pthread = new PaintThread();
new Thread(pthread).start();

addMouseListener(this);
addMouseMotionListener(this);
}

public void paint(Graphics g)
{
super.paint(g);//继承父类方法,这个老是忘记
setBackground(Color.WHITE);

Graphics2D g2d = (Graphics2D)g;
g2d.drawLine(1, 1, 500, 500);

for(int i=1; i<pointInfo.size(); i++)
{
p1 = (Point) pointInfo.elementAt(i);
Line2D line = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
g2d.draw(line);
}
}

/*
public void update(Graphics g)
{
this.paint(g);
}
*/

@Override
public void mouseDragged(MouseEvent e)
{
mouseX = e.getX();
mouseY = e.getY();
point = new Point(mouseX, mouseY, Color.BLACK);
pointInfo.addElement(point);
}
@Override
public void mouseMoved(MouseEvent e)
{
}
@Override
public void mouseClicked(MouseEvent e)
{
mouseX = e.getX();
mouseY = e.getY();
point = new Point(mouseX, mouseY, Color.BLACK);
pointInfo.addElement(point);
}
@Override
public void mouseEntered(MouseEvent e)
{
}
@Override
public void mouseExited(MouseEvent e)
{
}
@Override
public void mousePressed(MouseEvent e)
{
}
@Override
public void mouseReleased(MouseEvent e)
{
}

class Point
{
private int x;
private int y;
private Color color;

Point(int x, int y, Color color)
{
this.x = x;
this.y = y;
this.color = color;
}
}

class PaintThread implements Runnable
{
@Override
public void run()
{
repaint();
}
}
}


------解决方案--------------------
监听鼠标事件即可,mouseReleased/mousePressed