图形化编程:画图工具的基本构建及简单图形绘制
介绍构建画图工具的基本组件绘制直线、矩形和等腰三角形。一、构建画图工具界面JFrame jf new JFrame(); jf.setTitle(画图工具); jf.setSize(900,900); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(3); jf.setVisible(true);二、添加监听器“DrawListener”已知我们是在窗体上用鼠标画画所以我们要给窗体添加鼠标监听器MouseListener1.实现接口import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class DrawListener implements MouseListener { //引用传递 //重写抽象方法 public void mouseClicked(MouseEvent e){}//点击 public void mousePressed(MouseEvent e){}//按下 public void mouseReleased(MouseEvent e){}//松开 public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} }2.给窗体添加监听器//给窗体添加鼠标监听器方法 //接口不能直接创建对象重新定义类实现(继承)接口重写接口中的抽象方法 DrawListener listener new DrawListener(); jf.addMouseListener(listener);3.设计交互功能想要在窗体上绘画就需要类“Graphics”画笔思路1.创建画笔对象并从窗体上获取画笔对象类“DrawUI”中//画笔图形内容显示在哪个组件上画笔就从该组件上获取 //从窗体上获取画笔对象一定要在窗体可见之后 Graphics g jf.getGraphics();2.将画笔对象传递给监听器类“DrawListener”中//引用传递 public Graphics gr; //保存传递过来的画笔对象类“DrawUI”中//把画笔对象g 传递给DrawListener类 listener.gr g;3.画直线/矩形/等腰三角形画直线public int x1,y1,x2,y2; //重写抽象方法 public void mouseClicked(MouseEvent e){} public void mousePressed(MouseEvent e){ //获取当前坐标值 //作用域:一对大括号 { } 就是一个独立的作用域 //局部变量1.在方法(作用域)中定义的变量 2.方法的参数 x1 e.getX();//获取起点横坐标 y1 e.getY();//获取起点纵坐标 } public void mouseReleased(MouseEvent e){ x2 e.getX();//获取终点横坐标 y2 e.getY();//获取终点纵坐标 //绘制图形 gr.drawLine(x1,y1,x2,y2);//起点横坐标起点纵坐标终点横坐标终点纵坐标画矩形public void mouseReleased(MouseEvent e){ //松开 x2 e.getX(); y2 e.getY(); //取绝对值 w Math.abs(x1-x2);//宽 h Math.abs(y1-y2);//高 //取最小值 mx Math.min(x1,x2);//左上角点横坐标 my Math.min(y1,y2);//左上角点纵坐标 gr.drawRect(mx,my,w,h);//左上角横坐标左上角纵坐标宽高从左上往右下画画等腰三角形等腰三角形实际上是由三条线相连而成只需通过起点和终点计算出三个顶点即可public void mousePressed(MouseEvent e){ //按下 x1 e.getX(); y1 e.getY(); } public void mouseReleased(MouseEvent e){ //松开 x2 e.getX(); y2 e.getY(); x11 (x1x2)/2; y11 y1; x22 x1; y22 y2; x33 x2; y33 y2; gr.drawLine(x11,y11,x22,y22); gr.drawLine(x11,y11,x33,y33); gr.drawLine(x22,y22,x33,y33); }