java动态画圈圈。运用多线程,绘图
总结:只是意外的收获吧。之前一篇是老师教的,一个点,从底层开始升起,到鼠标按下的地方开始画圈圈,
现在改变了一下,因为点上升的一个循环和画圈的循环是分开的
现在让点点自己跑,并且边跑边画圈。而且在for循环的最大值时终止“绽放”。很美
package com.aa; import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random; //实现一个礼花绽放的界面
import javax.swing.*; public class Test6 { public static void main(String[] args) {
JPanel jp = new JPanel();
JFrame f = new JFrame();
JLabel jl = new JLabel("周杰伦周杰伦周杰伦周杰伦周杰伦");
jl.setForeground(Color.red);// 字体设置红色
jl.setFont(new Font("", Font.ITALIC, 42));
JLabel jl2 = new JLabel("听妈妈的话");
jl2.setForeground(Color.green);
jl2.setFont(new Font("", Font.TRUETYPE_FONT, 33));
// f.setBackground(Color.black);//frame是块玻璃,不能直接添加背景颜色
f.setDefaultCloseOperation(3);
Panel p = new Panel();
p.add(jl);// 将label添加到panel里面
p.add(jl2);
p.setBackground(Color.black);// 这里还是改成
f.add(p);//
f.setVisible(true);
f.setBounds(100, 200, 500, 500);
}
} class Panel extends JPanel implements Runnable, MouseListener, ActionListener {// 实现Runnable接口 int x, y; public Panel() {
this.addMouseListener(this);
this.setBackground(Color.green);// } @Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
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 } @Override
public void run() {
int xx = x;
int yy = y;
int max_y = 450;
while (yy < max_y) {
Graphics g = this.getGraphics();// 绘图的方法
g.setColor(Color.yellow);
g.fillOval(xx, max_y = max_y - 10, 10, 10);
// 这里睡眠是小点点上升的时间吗?
try {
Thread.currentThread().sleep(60);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.setColor(Color.black);
g.fillOval(xx, max_y, 10, 10);
// 把for循环放在while循环里了,所以点点跑哪里它就画哪里
Random r = new Random();
for (int i = 0; i < 30; i++) {
// g.setColor(Color.green);
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r
.nextInt(255)));
g.drawOval(xx - i * 1, max_y - i * 1, i * 2, i * 2);
g.drawOval(xx - i * 2, max_y - 2 * i, i * 4, i * 4);
g.drawOval(xx - i * 3, max_y - i * 3, i * 6, i * 6);
try {
Thread.currentThread().sleep(60);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 这里涉及一个睡眠,这个睡眠是每一次画圈后的等待时间吗?,还是点击其他点点的间隔时间
g.setColor(Color.black);// 画笔的颜色
g.drawOval(xx - i * 1, max_y - i * 1, i * 2, i * 2);
g.drawOval(xx - i * 2, max_y - 2 * i, i * 4, i * 4);
g.drawOval(xx - i * 3, max_y - i * 3, i * 6, i * 6); } } } @Override
public void actionPerformed(ActionEvent e) { } }
java动态画圈圈。运用多线程,绘图的更多相关文章
- Java 动态写轮眼 SharinganJPanel (整理)
/** * Java 动态写轮眼 SharingganJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 设计声明: * 1.虽然岸本是日本人,而我个人作为其模仿者,依 ...
- Java 动态眨眼 EyesJPanel (整理)
/** * Java 动态眨眼 EyesJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 注意事项: * 1.本程序为java程序,同时感谢您花费宝贵的时间来阅读本文档: ...
- 深入理解 Java 动态代理机制
Java 有两种代理方式,一种是静态代理,另一种是动态代理.对于静态代理,其实就是通过依赖注入,对对象进行封装,不让外部知道实现的细节.很多 API 就是通过这种形式来封装的. 代理模式结构图(图片来 ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- Java知多少(97)绘图模式概述
绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色.例如,后绘制的覆盖早先绘制的:或者后绘制与早先绘制的两种颜色按某种规则混合.主要有正常模式和异或模式两种:正常模式是后绘制的图 ...
- Java编写画图板程序细节-保存已画图形
没有Java编写画图板程序细节-保存已画图形 一.为何我们要保存画图板上已画图形呢? 有很多人会问,为什么我们一定要保存画图板上已经画好了的图形呢?原因很简单.当我们在画图板上画完自己想画的图形后 ...
- java动态编译 (java在线执行代码后端实现原理)(二)
在上一篇java动态编译 (java在线执行代码后端实现原理(一))文章中实现了 字符串编译成字节码,然后通过反射来运行代码的demo.这一篇文章提供一个如何防止死循环的代码占用cpu的问题. 思路: ...
- Java 动态调试技术原理及实践
本文转载自Java 动态调试技术原理及实践 导语 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径.但断点调试会在断点位置停顿,使得整个应用停止响应. ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
随机推荐
- python之websocket
一.websocket WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工 ...
- 读jQuery之六(缓存数据)
很多同学在项目中都喜欢将数据存储在HTMLElement属性上,如 1 2 3 4 <div data="some data">Test</div> < ...
- Centos6.8 Jetty 安装配置
ssh root@IP Password------------------------------------------------------------------------------↑登 ...
- python考试
py4测试题 1.8<<2等于?322.通过内置函数计算5除以2的余数 divmod(5,2)3.s=[1,"h",2,"e",[1,2,3],&q ...
- UI- UIView控件知识点回顾
// 通过一个frame来初始化一个UI控件 - (id)initWithFrame:(CGRect)frame; // YES:能够跟用户进行交互 @property(nonatomic,gett ...
- DRF 的视图,路由和渲染器
DRF 的视图,路由和渲染器 1 视图 简单的增删改查 : ModelViewSet; 复杂的操作使用APIView 和 GenericViewSet APIView(View) class Home ...
- Markdown转HTML之Node篇
前言 环境及编码 搭建环境 express markdown-it commander rd 核心编码 cmd_preview模块 cmd_build模块 打造命令行工具 写点xxmd 演示 总结 前 ...
- Win7系统64位环境下使用Apache——下载mod_jk
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/70313329 本文出自[我是干勾鱼的博客] 之前在几篇文章: Win7系统64位 ...
- Android 框架学习1:EventBus 3.0 的特点与如何使用
前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...
- Unity的Update() 和 FixedUpdate()的区别
Update() 和 FixedUpdate()在游戏中都会在更新的时候自动循环调用. 但是Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体 ...