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

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

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 } }

  

最新文章

  1. docker核心原理
  2. BZOJ 4423: [AMPPZ2013]Bytehattan
  3. CSS里的pointer-events属性
  4. mysql 数据库问题com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  5. WordPress安装使用问题记录
  6. 【freemaker】之整合springMVC
  7. [AIR] Screen 的应用
  8. spring3中新增的@value注解
  9. 给Activity切换加入动画
  10. 即时通信系统Openfire分析之七:集群配置
  11. Java 8的用法(泛型接口,谓词链)
  12. 基于jieba,TfidfVectorizer,LogisticRegression进行搜狐新闻文本分类
  13. [Android] 基于 Linux 命令行构建 Android 应用(二):命令行管理项目
  14. [LeetCode&amp;Python] Problem 700. Search in a Binary Search Tree
  15. python format()函数的用法
  16. (转) centos7下创建mysql5.6多实例
  17. Java基础-IO流对象之打印流(PrintStream与PrintWriter)
  18. LANMP常用配置.md
  19. [19/03/26-星期二] 容器_Map(图、键值对、映射)接口之HashMap(散列映射)&amp;TreeMap(树映射)
  20. 【跟我一步一步学Struts2】——Struts2工作流程

热门文章

  1. java socket - 传递对象
  2. 使用ssm整合是创建Maven项目报错Failure to transfer com.thoughtworks.xstream:xstream:pom:1.3.1
  3. 调用http接口的工具类
  4. C# 语言版本
  5. react 文章
  6. python递归 及 面向对象初识及编程思想
  7. mysql查询结果带上序号
  8. 【spark】分区
  9. C# List 排序
  10. 怎么用HD Tune检测硬盘坏道