`

有趣的java彩蛋程序

阅读更多

有趣的java彩蛋程序

帮别人做课程设计,无意中看到一道彩蛋程序的题。觉得挺有意思的,这也是我第一次接触到动态显示的程序,感觉很有趣,很乐意在这里跟大家分享一下。

题目的要求是从界面输入行数和列数后,按下确定按钮后,在界面正中央出现一系列颜色不断变化闪烁的椭圆形彩蛋。

实现的思路也很简单,界面就不说了,彩蛋的绘制思路就是通过随机数使椭圆颜色的三个参数值不断变化,再通过不断重绘实现图形的“闪烁”。注意为了使程序灵活性更高,要把重绘放到一个线程中运行,防止整个窗体陷入死循环。

废话不多说了直接贴代码。

PS:我后来想了想,其实稍稍一改还可以做出颜色由浅到深类似呼吸灯的变化效果,或者同时实现彩蛋的位置不断移动,即完全的动画效果,大家可以一起试试!

 

主窗体:

package 彩蛋;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyJFrame extends JFrame{
	public DrawComponent dc = new DrawComponent();

	public static void main(String[] args) {
		MyJFrame jmf= new MyJFrame();
		jmf.initUI();
	}

	private void initUI() {
		
		this.setSize(600,500);
		this.setDefaultCloseOperation(3);
		this.setTitle("我的彩蛋");
		JPanel jp = new JPanel();
		jp.setSize(50, 0);
		jp.setLayout(new FlowLayout());
		this.add(BorderLayout.SOUTH,jp);
		JLabel j1 = new JLabel("行数");
		JTextField jtf1 = new JTextField();
		jtf1.setPreferredSize(new Dimension(20,30));
		JLabel j2 = new JLabel("列数");
		JTextField jtf2 = new JTextField();
		jtf2.setPreferredSize(new Dimension(20,30));
		JButton jb = new JButton("确定");
		
		MyActionListener ma = new MyActionListener(dc,jtf1,jtf2);
		jb.addActionListener(ma);
		jp.add(j1);
		jp.add(jtf1);
		jp.add(j2);
		jp.add(jtf2);
		jp.add(jb);
		this.add(dc);
		
		this.setVisible(true);
		
	}
	
}

 

绘制彩蛋的组件

package 彩蛋;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Random;

import javax.swing.JComponent;

public class DrawComponent extends JComponent {
	private int row =0,column = 0;
	
	//重绘方法
	public void paintComponent(Graphics g) {
		this.setPreferredSize(new Dimension(400,400));
		Random rand = new Random();
		for(int i = 0;i<this.row;i++){
			for(int j = 0;j<this.column;j++){
				int r1 = rand.nextInt(256);
				int g1 = rand.nextInt(256);
				int b1 = rand.nextInt(256);
				Color c = new Color(r1,g1,b1);
				g.setColor(c);
				g.fillOval(j*100+100, i*50+50, 100, 50);
			}
		}	
	}
	
	public int getRow() {
		return row;
	}

	public void setRow(int row) {
		this.row = row;
	}

	public int getColumn() {
		return column;
	}

	public void setColumn(int column) {
		this.column = column;
	}

}

 监听器:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;

public class MyActionListener implements ActionListener {

	public JTextField jtf1,jtf2;
	public DrawComponent dc;
	private MyThread m1;
	
	public MyActionListener(DrawComponent dc,JTextField jtf1, JTextField jtf2) {
		this.dc = dc;
		this.jtf1 = jtf1;
		this.jtf2 = jtf2;
	}

	public void actionPerformed(ActionEvent e) {
		//得到文本框的文本值
		int row = Integer.parseInt(this.jtf1.getText());
		int column = Integer.parseInt(this.jtf2.getText());
		
		//启动线程
		if(m1 == null){
			m1 = new MyThread(this.dc);
			m1.start();
		}
		this.dc.setColumn(column);
		this.dc.setRow(row);
	}

}

 

线程:

package 彩蛋;

class MyThread extends Thread{
    public DrawComponent dc;
    
	public MyThread(DrawComponent dc){
		this.dc = dc;
	}
	
	public void run(){
		while (true){
		this.dc.repaint();
		}
	}
}

 

分享到:
评论
1 楼 monsterhuan 2013-07-21  
贴张图片看看嘛

相关推荐

    Java中国论坛程序 v0.1.7.zip

    Java中国论坛程序简介 Java中国是一款开源免费的论坛程序,致力于打造一个简洁优质的Java程序员论坛。 Java中国论坛程序特性 界面简洁清爽,对移动端友好 支持markdown语法 支持Emoji表情输入 支持Github账户...

    JAVA 特殊效果案例

    在JAVA编程语言中,开发者可以利用其丰富的API和强大的功能实现各种特殊效果,为应用程序增添趣味性和互动性。本篇文章将深入探讨JAVA实现的五个特殊效果案例:彩蛋、画图、身份证转换、时钟以及字体线程。这些案例...

    JAVA 扫雷1.2 源代码 详细注释

    10. **"作弊"功能**:按键盘的上下键会有惊喜,可能是开发者预留的一个小彩蛋,通过键盘监听实现,增加了游戏的趣味性。 通过这个源代码,初学者不仅可以了解JAVA GUI编程的基本知识,还能深入理解游戏编程的逻辑和...

    82. Spring Boot – 启动彩蛋【从零开始学Spring Boot】

    Spring Boot – 启动彩蛋"这一主题,这属于Spring Boot框架的一部分,该框架简化了Java应用程序的创建和管理。启动彩蛋是开发人员为了增加趣味性或者隐藏信息而在软件中设置的小秘密,通常需要特定的触发条件才能...

    Java中国论坛开源.zip

    JavaChina是使用 Blade 框架搭建的一套简洁的论坛程序。演示地址 http://java-china.org  特性界面简洁清爽,对移动端友好支持markdown语法支持Emoji表情输入支持Github账户登录支持@用户支持在线播放音乐(小...

    Java 200行代码画了三种浪漫的圣诞树的实例代码

    - 程序内置一个动画彩蛋,谁用谁知道牛逼! 从此案例中你能学习到什么: - 能学习到高级轮廓(比如树)的纯代码绘制 - 能学习到不规则图形,如何进行纹理填充 - 能学习到面向对象的高级编程思想 示例代码: for ...

    JavaChina 开源论坛程序 v1.0

    Java中国是一款开源免费的论坛程序,致力于打造一个简洁优质的Java程序员论坛。特性:界面简洁清爽,对移动端友好支持markdown语法支持Emoji表情输入支持Github账户登录支持@用户支持在线播放音乐(小彩蛋)每日励志...

    SimplyJServer:然而,地球上最快的最轻便的Java HTTP Server!

    为Java开发人员制作自己的Web应用程序而制作的HTTP Java服务器 特征 低内存使用量“约12MB” LFI保护 DoS防护 使用纯Java进行纯编程 自定义状态代码 GZip是可选的 RAM使用情况监控器 将请求正文存储在非GET请求中 ...

    JavaChina 开源论坛程序源代码

    Java中国是一款开源免费的论坛程序,致力于打造一个简洁优质的Java程序员论坛。 特性: 界面简洁清爽,对移动端友好 支持markdown语法 支持Emoji表情输入 支持Github账户登录 支持@用户 支持在线播放音乐(小彩蛋) ...

    EasterEggHuntHeatTrack

    复活节彩蛋通常指的是软件或程序中开发者留下的秘密功能或有趣的彩蛋,用户通常需要通过特殊的步骤才能触发。在编程世界里,这种彩蛋可以是隐藏的代码、特殊功能或者是致敬其他作品的小细节。 这个项目的重点在于...

    Maven install 报错&quot;程序包不存在&quot;问题的解决方法

    彩蛋 如果以上方法都不能解决问题,可以尝试将整个 .m2/repository 文件夹从编译通过的电脑拷贝到自己电脑对应的 Maven 仓库地址,然后再编译。 Maven install 报错"程序包不存在"问题的解决方法需要我们详细地...

    java版商城源码-too-small-in-the-mall:大约1989年的文字冒险游戏

    多年来,我将其翻译成其他语言,并将其作为复活节彩蛋嵌入到我参与的几个软件项目中。 它在基于 Web 的企业应用程序中作为 Java 小程序提供,在 Microsoft SmartClient UI 中作为加密的 .NET DLL 提供。 还有一个 GW

    安卓自定义View实现钟表

    本教程将深入探讨如何在Android中实现一个自定义的钟表View,让应用程序能够展示实时的时间。 首先,我们要创建一个新的Java类,继承自Android的`View`类。这个新类将是我们的自定义钟表View的基础。在类中,我们...

    java实战开发1200例源码-apple2_fantavision_reloaded:Fantavision(重装)

    java实战开发1200例源码最后更新:2020 年 11 月 6 日,星期五。 Fantavision(重装) “关于 Fantavision,你可能不想知道的一切。” :-) 目录 介绍空手道!? 准备 ESC 退出 Ye Olde 引导跟踪P5 引导程序 引导跟踪...

    Android博饼源码和设计文档

    这个彩蛋可能是特殊的游戏奖励,或者是一个有趣的动画,增加了游戏的探索性和趣味性。通过查看源码,我们可以学习如何在代码中添加类似的隐藏功能。 总结,"Android博饼源码和设计文档"为我们提供了一个生动的实例...

    最简单的软件水印

    1. **复活节彩蛋水印**:这是一种较为简单的动态水印形式,通过在程序中设置特定的触发条件,当用户输入正确的触发信息时,程序会显示预设的水印信息。 2. **动态数据结构水印**:相比于复活节彩蛋水印,动态数据...

    计算器代码

    ”这部分可能是说这个压缩包中包含了一个与圣诞节相关的恶作剧程序,这可能是一个有趣的小应用,用于在节日时增添乐趣,也可能是一种编程技巧展示,比如隐藏的彩蛋或特定日期触发的特殊效果。 标签“最好的”可能...

    君子兰图霸(搞笑版).7z

    6. **幽默元素**:“搞笑版”可能意味着源码中有特别的彩蛋、幽默注释或功能,让程序员或使用者在学习和使用过程中感受到乐趣。 7. **学习与分享**:对于学习者来说,这样的源码提供了实际的案例,可以学习到实际...

    ot-harjoitustyo

    该应用程序的目的是成为一个有趣的电影琐事单人游戏。 基本版本的计划功能 用户可以玩具有以下属性的有趣的电影琐事游戏: 两类难度的随机问题 每个问题的计时器,因难度而异 可见累积分数 用户可以选择问题难度:...

    APP研发部案例展示.pdf

    - 其中,Tomcat用于服务器端的Java应用部署,Struts2是用于实现MVC模式的Web应用框架,Hibernate是对象关系映射工具,Spring提供了一个全面的编程和配置模型,JSON作为一种轻量级的数据交换格式。 - 服务器的选择...

Global site tag (gtag.js) - Google Analytics