颜色类java

时间:2015-11-24 16:16:37

标签: java user-interface

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

代码***************************************** ******************

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");
    }

}

1 个答案:

答案 0 :(得分: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;
    ...
}