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) {
    	}
    }
    
    
  • 相关阅读:
    Zookeeper(1)---初识
    golang的一些零散笔记
    ELK使用过程中遇到的一些问题
    ECharts系列:玩转ECharts之常用图(折线、柱状、饼状、散点、关系、树)
    MySQL系列:Docker安装 MySQL提示错误:Access denied for user'root'@'localhost' (using password:yes)
    HTML+CSS系列:登录界面实现
    Apollo系列(二):ASP.NET Core 3.1使用分布式配置中心Apollo
    Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)
    为你的应用加上skywalking(链路监控)
    工作中,你是如何开始搭建一套容器云环境的呢?
  • 原文地址:https://www.cnblogs.com/dgwblog/p/7913600.html
Copyright © 2011-2022 走看看