有趣的java彩蛋程序

阅读: 评论:0

有趣的java彩蛋程序

有趣的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&w;i++){for(int j = 0;j&lumn;j++){int r1 = Int(256);int g1 = Int(256);int b1 = Int(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) {w = row;}public int getColumn() {return column;}public void setColumn(int column) {lumn = 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(Text());int column = Integer.parseInt(Text());//启动线程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){paint();}}
}

 

本文发布于:2024-01-27 10:25:18,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063223141153.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:彩蛋   有趣   程序   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23