A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

// MainFrame类
import java.awt.BorderLayout;
import java.awt.EventQueue;

import java.awt.GridLayout;   //网格布局管理器

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainFrame extends JFrame {

        private JPanel contentPane;

        /**
         * Launch the application.
         */
        public static void main(String[] args) {
                EventQueue.invokeLater(new Runnable() {
                        public void run() {
                                try {
                                        MainFrame frame = new MainFrame();
                                        frame.setVisible(true);
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                });
        }

        /**
         * Create the frame.
         */
        public MainFrame() {
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setBounds(100, 100, 450, 300);
                contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);
               
                //将当前主窗体设置为9*9的网格布局,分别创建81个彩蛋面板,摆放上去
                //1. 创建网格布局管理器, 同时指定行和列
                GridLayout gl = new GridLayout(9, 9);
                //2. 将当前窗体的内容面板设置为网格布局
                contentPane.setLayout(gl);
               
                //3. 准备81个彩蛋面板
                OneEggPanel[] egg = new OneEggPanel[81];
               
                //4. 将81个彩蛋面板分别实例化,并添加到窗体的内容面板中
                for (int i = 0; i < egg.length; i++) {
                        egg[i] = new OneEggPanel();   //逐个new出蛋
                        contentPane.add(egg[i]);   //逐个添加到面板中
                }
        }
}

//OneEggPanel类
import java.util.Random;   

import java.awt.Graphics;
import java.awt.Color;

import javax.swing.JPanel;

//能够绘制出一个蛋的面板
//继承于JPanel,利用绘图来实现一个蛋的效果
//同时又实现Runnable接口,来达到具备线程的能力
public class OneEggPanel extends JPanel implements Runnable{
       
        private Random rand;   //声明一个随机数生成器
        private int sleepTime;   //控制休眠时间
       
        //构造方法,初始化本类一些成员
        public OneEggPanel() {
                rand = new Random();   //new出随机数生成器
               
                //随机产生休眠时间
                sleepTime = Math.abs(rand.nextInt()) % (1000 - 50) + 50;
               
                //启动当前的线程,令彩蛋一产生,就会不停地自动变色
                Thread t = new Thread(this);    //创建线程
                t.start();    //启动之
        }
       
        //重写父类的绘图方法
        protected void paintComponent(Graphics g) {
                super.paintComponent(g);
               
                //画蛋
                g.setColor(getRandColor());  //调用自定义的方法,产生随机颜色,令蛋的颜色成为随机
                //就画当前面板的内切圆
                int w = this.getWidth();
                int h = this.getHeight();
                g.fillOval(0, 0, w, h);
        }
       
        //自定义一个方法,用于产生随机颜色
        private Color getRandColor() {
                //1. 产生三个0~255之间的整数,分别表示rgb三元色的色值
                int r = Math.abs(rand.nextInt()) % 256;
                int g = Math.abs(rand.nextInt()) % 256;
                int b = Math.abs(rand.nextInt()) % 256;
               
                //2. 利用这三个随机整数,创建一个Color对象并返回
                Color c = new Color(r, g, b);
               
                return c;
        }
       
        //重写Runnable接口中的run方法
        public void run() {
                try {
                        while (true) {    //不断地
                                Thread.sleep(sleepTime);//设定间隔时间
                                this.repaint();   //重绘当前面板,彩蛋变色
                        }
                } catch (InterruptedException ie) {
                        ie.printStackTrace();
                }
        }
}







QQ图片20160908224247.png (9.24 KB, 下载次数: 1)

QQ图片20160908224247.png

1 个回复

正序浏览
看的眼睛好累...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马