代码基本上应该为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");
}
}
答案 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;
...
}