接着上篇說:java
這裏咱們已經作出了四色板,可是顏色四種顏色是固定的,那麼咱們能不能讓每次運行出來的顏色都不同呢?數組
既然想隨機顏色,則確定要用到隨機類Random。dom
在四色板中,咱們對四塊小畫布背景色的設置是使用Color的靜態屬性來完成的,好比Color.RED,其實咱們還可使用Color類的構造函數來完成:ide
java.awt.Color:構造方法:函數
Color(int r,int g,int b):建立具備指定紅色、綠色和藍色值的不透明的 sRGB 顏色,這些值都在 (0 - 255) 的範圍內。佈局
知道了這個,咱們就能用Random來控制三個int型的參數,來產生不一樣的顏色了。網站
- package com.anjoyo.test;
- import java.awt.Color;
- import java.awt.GridLayout;
- import java.util.Random;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class Main extends JFrame {
- public Main() {
- // 建立基礎畫布
- JPanel pnBasic = new JPanel();
- // 建立網站佈局格式:2行2列
- GridLayout lyGrid = new GridLayout(2, 2);
- // 將基礎畫布的佈局格式指定爲上面定義的佈局方式
- pnBasic.setLayout(lyGrid);
- // 將基礎畫布的背景色設置爲綠色GREEN
- // pnBasic.setColor.GREEN);
- Random ran = new Random();
- // 建立紅黃藍綠四塊小畫布,並分別設置背景色
- JPanel pnRed = new JPanel();
- pnRed.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran
- .nextInt(256)));
- JPanel pnYello = new JPanel();
- pnYello.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran
- .nextInt(256)));
- JPanel pnBlue = new JPanel();
- pnBlue.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran
- .nextInt(256)));
- JPanel pnGreen = new JPanel();
- pnGreen.setBackground(new Color(ran.nextInt(256), ran.nextInt(256), ran
- .nextInt(256)));
- // 將紅黃藍綠四塊小畫布加入到基礎畫布中
- pnBasic.add(pnRed);
- pnBasic.add(pnYello);
- pnBasic.add(pnBlue);
- pnBasic.add(pnGreen);
- // 將畫板和畫布綁定
- setContentPane(pnBasic);
- // 設置默認關閉模式
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 設置標題欄
- setTitle("個人小窗口");
- // 設置窗口區域(x,y,width,heigth)
- setBounds(200, 200, 400, 300);
- // 設置是否顯示
- setVisible(true);
- }
- public static void main(String[] args) {
- new Main();
- }
- }
運行兩次,對比效果以下:spa
能夠看出,已經實現了顏色的隨機。3d
下面咱們就來實現隨機顏色的多色板:以10行10列爲例:blog
項目分析:
1) 既然咱們想要10行10列的多色板,那麼咱們能夠先定義兩個int型的變量用來放行和列數。
2) 咱們的佈局不能仍爲2行2列了,應該是10行10列了。
3) 10行10列一共100塊板,咱們不可能一個個的來定義,須要使用數組。
4) 該數組的長度爲行和列的乘積。
實現代碼以下:
- package com.anjoyo.test;
- import java.awt.Color;
- import java.awt.GridLayout;
- import java.util.Random;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class Main extends JFrame {
- public Main() {
- //定義行數和列數
- int niRow = 10;
- int niCol = 10;
- // 建立基礎畫布
- JPanel pnBasic = new JPanel();
- // 建立網站佈局格式:此處變爲10行10列
- // 使用變量指明,這樣上面指定行數和列數以後下面不須要作其餘更改。
- GridLayout lyGrid = new GridLayout(niRow, niCol);
- // 將基礎畫布的佈局格式指定爲上面定義的佈局方式
- pnBasic.setLayout(lyGrid);
- //隨即類
- Random ran = new Random();
- //建立小畫布集,數組長度爲行和列的乘積。
- JPanel[] pnArr = new JPanel[niRow * niCol];
- for (int i = 0; i < pnArr.length; i++) {
- // 建立每一個小畫布
- pnArr[i] = new JPanel();
- // 爲每個小畫布添加背景色
- pnArr[i].setBackground(new Color(ran.nextInt(256),
- ran.nextInt(256), ran.nextInt(256)));
- // 將每個小畫布加入基礎畫布中
- pnBasic.add(pnArr[i]);
- }
- // 將畫板和畫布綁定
- setContentPane(pnBasic);
- // 設置默認關閉模式
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 設置標題欄
- setTitle("個人小窗口");
- // 設置窗口區域(x,y,width,heigth)
- setBounds(200, 200, 400, 300);
- // 設置是否顯示
- setVisible(true);
- }
- public static void main(String[] args) {
- new Main();
- }
- }
運行兩次,對比效果以下:
最後再說一點,這裏咱們可使用GridLayout的重載的構造函數:
GridLayout(int rows, int cols, int hgap, int vgap):建立具備指定行數和列數的網格佈局。給佈局中的全部組件分配相等的大小。
此外,將水平和垂直間距設置爲指定值。好比這裏咱們設置爲new GridLayout(niRow,niCol,5,5);運行效果以下:
這樣,多色板就完成了。