java实战开发--多色板

 接着上篇说:

这里我们已经做出了四色板,但是颜色四种颜色是固定的,那么我们能不能让每次运行出来的颜色都不一样呢?

既然想随机颜色,则肯定要用到随机类Random。

在四色板中,我们对四块小画布背景色的设置是使用Color的静态属性来完成的,比如Color.RED,其实我们还可以使用Color类的构造函数来完成:

java.awt.Color:构造方法:

Color(int r,int g,int b):创建具有指定红色、绿色和蓝色值的不透明的 sRGB 颜色,这些值都在 (0 - 255) 的范围内。

知道了这个,我们就能用Random来控制三个int型的参数,来产生不同的颜色了。

  
  
  
  
  1. package com.anjoyo.test; 
  2.  
  3. import java.awt.Color; 
  4. import java.awt.GridLayout; 
  5. import java.util.Random; 
  6.  
  7. import javax.swing.JFrame; 
  8. import javax.swing.JPanel; 
  9.  
  10. public class Main extends JFrame { 
  11.     public Main() { 
  12.         // 创建基础画布 
  13.         JPanel pnBasic = new JPanel(); 
  14.         // 创建网站布局格式:2行2列 
  15.         GridLayout lyGrid = new GridLayout(22); 
  16.         // 将基础画布的布局格式指定为上面定义的布局方式 
  17.         pnBasic.setLayout(lyGrid); 
  18.         // 将基础画布的背景色设置为绿色GREEN 
  19.         // pnBasic.setColor.GREEN);
  20.         Random ran = new Random(); 
  21.         // 创建红黄蓝绿四块小画布,并分别设置背景色 
  22.         JPanel pnRed = new JPanel(); 
  23.         pnRed.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran 
  24.                 .nextInt(256))); 
  25.         JPanel pnYello = new JPanel(); 
  26.         pnYello.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran 
  27.                 .nextInt(256))); 
  28.         JPanel pnBlue = new JPanel(); 
  29.         pnBlue.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran 
  30.                 .nextInt(256))); 
  31.         JPanel pnGreen = new JPanel(); 
  32.         pnGreen.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran 
  33.                 .nextInt(256))); 
  34.         // 将红黄蓝绿四块小画布加入到基础画布中 
  35.         pnBasic.add(pnRed); 
  36.         pnBasic.add(pnYello); 
  37.         pnBasic.add(pnBlue); 
  38.         pnBasic.add(pnGreen); 
  39.         // 将画板和画布绑定 
  40.         setContentPane(pnBasic); 
  41.         // 设置默认关闭模式 
  42.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  43.         // 设置标题栏 
  44.         setTitle("我的小窗口"); 
  45.         // 设置窗口区域(x,y,width,heigth) 
  46.         setBounds(200200400300); 
  47.         // 设置是否显示 
  48.         setVisible(true); 
  49.     } 
  50.  
  51.     public static void main(String[] args) { 
  52.         new Main(); 
  53.     } 

运行两次,对比效果如下:

可以看出,已经实现了颜色的随机。

下面我们就来实现随机颜色的多色板:以10行10列为例:

项目分析:

1) 既然我们想要10行10列的多色板,那么我们可以先定义两个int型的变量用来放行和列数。

2) 我们的布局不能仍为2行2列了,应该是10行10列了。

3) 10行10列一共100块板,我们不可能一个个的来定义,需要使用数组。

4) 该数组的长度为行和列的乘积。

实现代码如下:

  
  
  
  
  1. package com.anjoyo.test; 
  2.  
  3. import java.awt.Color; 
  4. import java.awt.GridLayout; 
  5. import java.util.Random; 
  6. import javax.swing.JFrame; 
  7. import javax.swing.JPanel; 
  8.  
  9. public class Main extends JFrame { 
  10.     public Main() { 
  11.         //定义行数和列数 
  12.         int niRow = 10
  13.         int niCol = 10
  14.         // 创建基础画布 
  15.         JPanel pnBasic = new JPanel(); 
  16.         // 创建网站布局格式:此处变为10行10列
  17. // 使用变量指明,这样上面指定行数和列数之后下面不需要做其他更改。 
  18.         GridLayout lyGrid = new GridLayout(niRow, niCol); 
  19.         // 将基础画布的布局格式指定为上面定义的布局方式 
  20.         pnBasic.setLayout(lyGrid); 
  21.         //随即类 
  22.         Random ran = new Random(); 
  23.         //创建小画布集,数组长度为行和列的乘积。 
  24.         JPanel[] pnArr = new JPanel[niRow * niCol]; 
  25.         for (int i = 0; i < pnArr.length; i++) { 
  26.             // 创建每个小画布 
  27.             pnArr[i] = new JPanel(); 
  28.             // 为每一个小画布添加背景色 
  29.             pnArr[i].setBackground(new Color(ran.nextInt(256), 
  30.                     ran.nextInt(256), ran.nextInt(256))); 
  31.             // 将每一个小画布加入基础画布中 
  32.             pnBasic.add(pnArr[i]); 
  33.         } 
  34.         // 将画板和画布绑定 
  35.         setContentPane(pnBasic); 
  36.         // 设置默认关闭模式 
  37.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  38.         // 设置标题栏 
  39.         setTitle("我的小窗口"); 
  40.         // 设置窗口区域(x,y,width,heigth) 
  41.         setBounds(200200400300); 
  42.         // 设置是否显示 
  43.         setVisible(true); 
  44.     } 
  45.  
  46.     public static void main(String[] args) { 
  47.         new Main(); 
  48.     } 

运行两次,对比效果如下:

最后再说一点,这里我们可以使用GridLayout的重载的构造函数:

GridLayout(int rows, int cols, int hgap, int vgap):创建具有指定行数和列数的网格布局。给布局中的所有组件分配相等的大小。

此外,将水平和垂直间距设置为指定值。比如这里我们设置为new GridLayout(niRow,niCol,5,5);运行效果如下:

这样,多色板就完成了。

你可能感兴趣的:(java,开发,多色板)