做一个简易的画图板
这里只演示画直线和矩形的代码,其余可自由拓展
步骤:
1,新建窗体
2,设置窗体属性
3,为鼠标添加动作监听器
4,创建MyListener类使之继承接口类MouseListener
5,获得鼠标按下和释放点的坐标
6,新建画笔,使画成直线
环境:
win8下的eclipse
package lessonPackage;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Draw extends JFrame
{
public static void main(String[]args)
{
Draw db=new Draw();
db.initFrame();
}
public void initFrame()
{
this.setTitle("画板");
this.setSize(800,600);
this.setLayout(new FlowLayout());
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setVisible(true);
//得到画笔,必须在窗体可见之后
Graphics g=this.getGraphics();
//安装监听器
MyListener mouse=new MyListener(g);
this.addMouseListener(mouse);
}
}
package lessonPackage;
import java.awt.*;
import java.awt.event.*;
public class MyListener implements MouseListener
{
public Graphics g1;
public int x1,x2,y1,y2;
//重载MyListener构造函数
public MyListener(Graphics g)
{
g1=g;
}
/**
* 鼠标按下时执行
*/
public void mousePressed(MouseEvent e)
{
//确定按下时坐标
x1=e.getX();
y1=e.getY();
}
/**
* 鼠标释放时执行
*/
public void mouseReleased(MouseEvent e)
{
//确定释放时坐标
x2=e.getX();
y2=e.getY();
//在按下和释放两点之间绘制图像,需要用画笔Graphics
//g1.drawLine(x1, y1, x2, y2);
int width=Math.abs(x2-x1);
int height=Math.abs(y2-y1);
int minX=Math.min(x1, x2);
int minY=Math.min(y1, y2);
g1.drawRect(minX, minY, width, height);
}
/**
* 鼠标点击时执行
*/
public void mouseClicked(MouseEvent e)
{
}
/**
* 鼠标进入时执行
*/
public void mouseEntered(MouseEvent e)
{
}
/**
* 鼠标出去时执行
*/
public void mouseExited(MouseEvent e)
{
}
}
重要知识点:
普通类,抽象类,接口类之间的关系
1,普通类可以调用构造方法构造对象,但抽象类和接口类不可以,因此通常接口类和抽象类用来作为父类
2,普通类不能调用抽象方法,而抽象类中有抽象方法,接口类中只能有抽象方法,因此,当继承抽象类或
接口类时,普通类需重写父类抽象方法
3,普通类可同时继承多个接口,但只能同时继承一个抽象类