问候,
到目前为止,我的代码已编译,但它会从白色变为黑色,然后不想更改。 假设它应该从红色 - >橙色 - >绿色 - >粉红色 - >蓝色 - >黑色...
public void init() {
c=new Color[] {Color.red, Color.orange, Color.green,
Color.pink, Color.blue, Color.black };
btnNext = new Button("Next Color");
btnNext.addActionListener(this);
setLayout(new BorderLayout());
add(btnNext, BorderLayout.SOUTH);
}
public void paint(Graphics g) { }
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnNext) {
for(int n=0;n<6;n++) {
setBackground(c[n]);
}
repaint();
}
}
感谢您的帮助。
答案 0 :(得分:1)
您需要做的是在数组中保留当前位置的int
成员变量。然后每次单击按钮时增加该位置。
// New int keeping track of background pos
private int arrPos;
public void init() {
c=new Color[] {Color.red, Color.orange, Color.green,
Color.pink, Color.blue, Color.black };
// initialize the int
arrPos = 0;
btnNext = new Button("Next Color");
btnNext.addActionListener(this);
setLayout(new BorderLayout());
add(btnNext, BorderLayout.SOUTH);
}
public void paint(Graphics g) { }
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnNext) {
// increment the background
arrPos++;
if (arrPos >= c.length) arrPos = 0;
setBackground(c[arrPos]);
repaint();
}
}
答案 1 :(得分:0)
正在发生的事情是,每次触发btnNext操作时,您都会同时循环显示所有颜色。它过得如此之快,以至于你看不到其他颜色。
我要做的是有一个变量来跟踪你所在数组中的位置,并在用户点击下一个时增加该变量,然后将背景更改为该颜色。你必须摆脱actionPerformed中的for循环。