帮我改改这个java小程序

importjava.awt.event.*;importjava.awt.*;publicclassDrawAnyextendsFrame{privateGraphic... import java.awt.event.*;
import java.awt.*;
public class DrawAny extends Frame
{
private Graphics g;
private int startX;
private int startY;
private int endX;
private int endY;

public DrawAny() {

this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();

}

public void mouseReleased(MouseEvent e) {
endX = e.getX();
endY = e.getY();
}
}
);

this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}

});

}

public static void main(String[] args)
{
DrawAny dra = new DrawAny();
dra.setSize(500,500);
dra.setVisible(true);
}

public void drawMe(Graphics g) {
g.drawLine(startX,startY,endX,endY);
}
}
//请问我现在应该如何在主函数中调用drawMe方法画出直线
展开
 我来答
Jasonzkq
2010-06-03
知道答主
回答量:16
采纳率:0%
帮助的人:10.4万
展开全部
/*
* 这是可以运行的代码,可以画出直线,其实最主要的就是增加一个重画线程类PaintThread,它每次调用DrawAny的
* repaint()方法,在java中repaint()又会调用paint(Graphics g)方法,其中g为系统内置画笔,是系统传给
*Frame的,所以自己不用定义,有问题可发我邮箱,865040920@qq.com
*/
import java.awt.event.*;
import java.awt.*;
public class DrawAny extends Frame
{
// private Graphics g;
private int startX;
private int startY;
private int endX;
private int endY;

public DrawAny() {

this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
System.out.println("startX "+startX);
System.out.println("startY "+startY);

}

public void mouseReleased(MouseEvent e) {
endX = e.getX();
endY = e.getY();
System.out.println("endX "+endX);
System.out.println("endY "+endY);
}
}
);

this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}
);

this.setSize(500,500);
this.setVisible(true);
new Thread(new PaintThread()).start();
}

public void paint(Graphics g) {

Color c = g.getColor();
g.setColor(Color.red);
g.drawLine(startX, startY, endX, endY);
// g.drawLine(50, 50, 100, 50);
g.setColor(c);
}

public static void main(String[] args)
{
DrawAny dra = new DrawAny();
}

private class PaintThread implements Runnable {

public void run() {
while(true) {
repaint(); //call update(g) or paint(g);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式