zoukankan      html  css  js  c++  java
  • Swing 100行画图示例

    关键内容,可以自行扩展

    package main;
    
    import java.awt.BasicStroke;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.awt.geom.Point2D;
    import java.util.Vector;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    
    public class MainFrame extends JFrame implements MouseListener, MouseMotionListener {
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private JPanel contentPane;
    	private Graphics2D g2;
    	private static Vector<Point2D> pointInfo;
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(() -> {
    			MainFrame mainFrame = new MainFrame();
    			mainFrame.setLocationRelativeTo(null);
    			mainFrame.setVisible(true);
    		});
    	}
    	/**
    	 * Create the frame.
    	 */
    	public MainFrame() {
    		addMouseListener(this);
    		addMouseMotionListener(this);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 951, 606);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		contentPane.setLayout(new BorderLayout(0, 0));
    		setContentPane(contentPane);
    		//初始化
    		pointInfo=new Vector<>();
    	}
    	@Override
    	public void paint(Graphics g) {
    		System.out.println("paint");
    		 g2 = (Graphics2D) g;
    		 int size = pointInfo.size();
    		 Point p1,p2;
    		 g2.setColor(Color.BLACK);
    		 g2.setStroke(new BasicStroke(WIDTH));
    		 for (int i = 0; i < size-1; i++) {
    			 p1 = (Point) pointInfo.elementAt(i);
    			 p2 = (Point) pointInfo.elementAt(i + 1);
    			 g2.drawLine(p1.x, p1.y, p2.x, p2.y);
    		}
    	}
    	public void update(Graphics g) {
    		System.out.println("update");
    		paint(g);
    	}
    	@Override
    	public void mouseDragged(MouseEvent e) {
    		System.out.println("mouseDragged");
    		Point cutflag = new Point(e.getX(), e.getY());
    		pointInfo.addElement(cutflag);
    		repaint();
    	}
    	@Override
    	public void mousePressed(MouseEvent e) {
    		Point cutflag = new Point(e.getX(), e.getY());
    		pointInfo.addElement(cutflag);
    	}
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		Point cutflag = new Point(-1, -1);
    		pointInfo.addElement(cutflag);
    		pointInfo.clear();
    	}
    	@Override
    	public void mouseMoved(MouseEvent e) {
    	}
    	@Override
    	public void mouseClicked(MouseEvent e) {
    	}
    	@Override
    	public void mouseEntered(MouseEvent e) {
    	}
    
    	@Override
    	public void mouseExited(MouseEvent e) {
    	}
    }
    
    
  • 相关阅读:
    hadoop
    常用安装
    rdd相关
    spark安装
    psutil
    scala linux终端高亮显示
    【原创】正则表达式(知识点总结)
    检测对象是否有某个属性(原型链检测和对象自身检测)
    JavaScript核心(对象+原型+函数+闭包+this+上下文堆栈+作用域链)
    JavaScript ES6迭代器指南
  • 原文地址:https://www.cnblogs.com/dgwblog/p/7913600.html
Copyright © 2011-2022 走看看