zoukankan      html  css  js  c++  java
  • java多线程实现礼花绽放的效果,

    总结:主要是那个红点点在上升的过程中要涂黑色,其实它不是一个点,是一个长条,而是被涂成黑色而隐藏了。还有这个睡眠时间,多线程

        是你在面板上随便点,会出现随机的颜色圆圈,点哪里,哪里就可以出现圆

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.Random;
    
    import javax.swing.*;
    
    public class Test1 {
    	public static void main(String[] args) {
    		JFrame f = new JFrame();
    		f.setDefaultCloseOperation(3);
    		f.setVisible(true);
    		f.setBounds(100, 100, 500, 500);
    		Panel p = new Panel();
    		p.setBackground(Color.black);
    		f.add(p);
    
    	}
    
    }
    
    class Panel extends JPanel implements MouseListener, Runnable {
    	int x;
    	int y;// 定义那个坐标
    
    	public Panel() {
    
    		this.addMouseListener(this);
    		// this.setBackground(Color.) //在面板上涂成黑色,已经在min函数里定义了,怎么还要这么做呢么?
    	}
    
    	// 一直往坐上变的顶角跑啊????
    	@Override
    	public void run() {// 线程=======核心代码
    
    		int xx = x;
    		int yy = y;
    		// 在这里添加核心关键的定义,
    		int max_y = 450;// 这个应该是礼花绽放的最高位置吧???
    		Graphics g = this.getGraphics();
    		while (yy < max_y) {
    			// GrayFilter g=this.getGraphics();//这个画图的方法在循环外部
    			g.setColor(Color.red);
    			g.fillOval(xx, max_y = max_y - 5, 5, 5);// 画个圆形是刚开始运行时出现的时候
    			try {
    				Thread.currentThread().sleep(40);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}// 睡眠
    
    			g.setColor(Color.black);
    			g.fillOval(xx, max_y, 5, 5);// 这里都要画两遍,为什么???在这里坐标不要改为:max_y=max_y-5
    		}
    
    		Random r = new Random();
    
    		for (int i = 0; i < 53; i++) {
    			g.setColor(Color.yellow);
    			g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
    			g.drawOval(xx - i * 2, max_y - i * 2, i * 4, i * 4);
    			g.drawOval(xx - i * 3, max_y - i * 3, i * 6, i * 6);
    			g.drawOval(xx - i * 4, max_y - i * 4, i * 8, i * 8);
    			try {
    				Thread.currentThread().sleep(40);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			g.setColor(Color.black);
    			g.drawOval(xx - i * 2, max_y - i * 2, i * 4, i * 4);
    			g.drawOval(xx - i * 3, max_y - i * 3, i * 6, i * 6);
    			g.drawOval(xx - i * 4, max_y - i * 4, i * 8, i * 8);
    
    		}
    
    	}
    
    	@Override
    	public void mouseClicked(MouseEvent e) {// 这个方法是,当点击鼠标时的操作
    		// 这里的E为对象=
    
    	}
    
    	@Override
    	public void mousePressed(MouseEvent e) {// 这个方法是按下鼠标的操作
    		x = e.getX();
    		y = e.getY();// 你妹啊=。这里用int类型去定义的。
    		Thread t = new Thread(this);
    		t.start();
    
    	}
    
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

      

  • 相关阅读:
    echarts3.0 实例容器不实时更新页面的问题
    Mac下搭建atx2环境
    MAC 下SFT环境搭建及使用
    【转发】基本adbui命令使用 可做图像识别
    UIAutomator2的API文档(三)
    UIAutomator2的API文档(二)
    UIAutomator2的API文档(一)
    UIAutomator2安装及连接
    uiautomator2通过wifi操作手机
    ATX-UI自动化环境搭建
  • 原文地址:https://www.cnblogs.com/langlove/p/3472233.html
Copyright © 2011-2022 走看看