java實戰開發--多色板

 接着上篇說:java

這裏咱們已經作出了四色板,可是顏色四種顏色是固定的,那麼咱們能不能讓每次運行出來的顏色都不同呢?數組

既然想隨機顏色,則確定要用到隨機類Random。dom

在四色板中,咱們對四塊小畫布背景色的設置是使用Color的靜態屬性來完成的,好比Color.RED,其實咱們還可使用Color類的構造函數來完成:ide

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.     } 

運行兩次,對比效果以下:spa

能夠看出,已經實現了顏色的隨機。3d

下面咱們就來實現隨機顏色的多色板:以10行10列爲例:blog

項目分析:

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);運行效果以下:

這樣,多色板就完成了。

相關文章
相關標籤/搜索