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) {
    	}
    }
    
    
  • 相关阅读:
    Tomcat修改端口号
    如何修改localhost为自己指定的域名
    Tomcat启动时启动窗口中文乱码问题的解决方案
    Java Web 项目jsp页面无法加载样式
    vue 父传子(通过属性传递)
    vue 父传子 讲解
    表白小爱心
    响应式开发
    组件的重复调用
    reduce
  • 原文地址:https://www.cnblogs.com/dgwblog/p/7913600.html
Copyright © 2011-2022 走看看