
帮我改改这个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方法画出直线 展开
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方法画出直线 展开
1个回答
展开全部
/*
* 这是可以运行的代码,可以画出直线,其实最主要的就是增加一个重画线程类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();
}
}
}
}
}
* 这是可以运行的代码,可以画出直线,其实最主要的就是增加一个重画线程类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();
}
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询