今天学习了GUI的画笔功能以及对鼠标的监听功能和实现方法:
package TWQ1;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;
public class Twq6 {
public static void main(String[] args) {
new Mypaint("画笔");//启动窗体
}
}
class Mypaint extends Frame {
ArrayList points;//用来存储鼠标当前点击的位置
public Mypaint(String title){
super(title);//给窗体添加一个标题
points=new ArrayList<>();
addMouseListener(new MymouseLisener());//添加鼠标监听器
addWindowListener(new WindowAdapter() {//添加窗体监听器,点击窗体右上角的×号之后可以关闭窗体
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setBounds(300,300,500,500);//设置窗体的位置和大小
setVisible(true);//显示窗体
}
public void addPaint(Point point){
points.add(point);//把当前鼠标点击的点存放起来
}
@Override
public void paint(Graphics g) {
Iterator iterator=points.iterator();//定义迭代器将当前鼠标点击过的点显示在画板上
while(iterator.hasNext()){//只要动态数组里还有可用的点就把它画到画板上
Point point= (Point) iterator.next();//当前点画完之后,指针指到下一个点
g.setColor(Color.BLUE);//设置画在面板上的当前点的颜色
g.fillOval(point.x,point.y,10,10);//设置画在面板上的当前点的形状以及大小
}
}
class MymouseLisener extends MouseAdapter{
@Override
public void mousePressed(MouseEvent e) {
Mypaint mypaint= (Mypaint) e.getSource();
mypaint.addPaint(new Point(e.getX(),e.getY()));//将画笔放到窗体上
mypaint.repaint();//使得鼠标每点一次画一次
}
}
}
在窗体上鼠标点击一次就会出现一个蓝色的点,最后实现的效果如下图: