2015-11-24 44 views
1

代码应该基本上为1到45之间的数字指定唯一的颜色,并且每次绘制特定数字时,分配给该特定数字的颜色应该是文本框的背景。问题是我无法给一个数字分配一个颜色。颜色分类java

该代码******************************************** *******************

import java.awt.*; 
import java.awt.event.*; 
import java.util.Arrays; 

public class Lottery extends Frame implements ActionListener{ 

    private TextField[] t = new TextField[100]; 
    private Button b; 

    public Lottery(){ 
     for(int i=0;i<7;i++){ 
      this.t[i] = new TextField(5); 
      t[i].setEditable(false); 
     } 

     b = new Button("Draw Numbers"); 
     b.addActionListener(this); 

     this.add(b); 
     for(int i=0;i<7;i++){ 
      this.add(t[i]); 
     } 

     this.addWindowListener(new WindowAdapter(){ 
      public void windowClosing(WindowEvent windowevent){ 
       System.exit(0); 
      } 
     }); 

     this.setLayout(new FlowLayout()); 
     this.setTitle("Lottery Draw"); 
     this.pack(); 
     this.setVisible(true); 
    } 

    public static int[] lotteryNumbers(){ 
     int[] numbers = new int[7]; 
     int i = 0; 
     while(i<7){ 
      int value = 1 + (int)(45*Math.random()); 
      if(isUnique(numbers,value)){ 
       numbers[i] = value; 
       i++; 
      } 
     } 
     return numbers; 
    } 

    public static boolean isUnique(int[] array, int value){ 
     for(int i=0; i<array.length; i++) 
     { 
      if(array[i] == value) return false; 
     } 
     return true; 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 

     int[] numbers = lotteryNumbers(); 
     Arrays.sort(numbers); 

     for(int i=0;i<7;i++) 
     { 
      t[i].setText(Integer.toString(numbers[i])); 
     } 


    } 


    public static void main(String[] args) { 
     System.out.println("Start of Application"); 
     Lottery lot = new Lottery(); 
     System.out.println("End of Application"); 
    } 

} 
+0

从这段代码中我不清楚你想要做什么。也许你需要使用类对象列表,而不是原始数组。 – mcraen

+0

你在哪里设置背景颜色? – gonzo

+0

它不在那里,因为我不知道该怎么做 – Shane

回答

0

如果你想有一个随机的颜色,当你设置TextField的文本,你可以做这样的事情:

Random r = new Random(); 
int[] numbers = lotteryNumbers(); 
Arrays.sort(numbers); 

for(int i=0;i<7;i++) 
{ 
    t[i].setText(Integer.toString(numbers[i])); 
    t[i].setBackground(new Color(r.nextFloat(), r.nextFloat(), r.nextFloat())); 
} 

真的没有办法用一个数字来创建一个颜色,并且每次运行该程序时都保持相同的颜色。可以工作的是为每个数字创建一个静态数组(大小为45的数字)和硬代码颜色值。

private static Color[] colors = new Color[45]; 
static{ 
    colors[0] = Color.BLACK; 
    colors[1] = Color.BLUE; 
    ... 
} 
+1

好吧,谢谢你的 – Shane