Java源码-简单的绘图板

来源:互联网 发布:淘宝店刷钻是真的吗 编辑:程序博客网 时间:2024/05/22 04:52

看源码好处多多,边看边改效果更佳,可以了解每个细枝末节的来龙去脉。

通过修改参数,画笔的粗度已被我改的比较高了,落笔格外给力微笑


遗留问题:看似简短的画图小程序,还没有完全理解代码为什么这么写,留待日后再察。


代码如下:

//Fig. 12.34: PaintPanel.java//Adapter class used to implement event handlers.import java.awt.Point;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import java.util.ArrayList;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JLabel;import java.awt.BorderLayout;public class PaintPanel extends JPanel {// list Point referencesprivate final ArrayList<Point> points = new ArrayList<>(); // set up GUI and register mouse event handlerpublic PaintPanel(){   // handle frame mouse motion event   addMouseMotionListener(      new MouseMotionAdapter() // anonymous inner class      {           // store drag coordinates and repaint         @Override         public void mouseDragged(MouseEvent event)         {            points.add(event.getPoint());            repaint(); // repaint JFrame         }       }    ); }// draw ovals in a 4-by-4 bounding box at specified locations on window@Overridepublic void paintComponent(Graphics g){   super.paintComponent(g); // clears drawing area   // draw all    for (Point point : points)      g.fillOval(point.x, point.y, 50, 50);} public static void main(String[] args){    // create JFrame   JFrame application = new JFrame("A simple paint program");   PaintPanel paintPanel = new PaintPanel();    application.add(paintPanel, BorderLayout.CENTER);       // create a label and place it in SOUTH of BorderLayout   application.add(new JLabel("Drag the mouse to draw"),       BorderLayout.SOUTH);   application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   application.setSize(400, 200);    application.setVisible(true); } } // end class PaintPanel

运行截屏:(用鼠标描了十来次,总算描了一个比较满意的,送给Java)


0 0
原创粉丝点击