如何更改Java小程序的背景颜色?

时间:2009-07-20 14:43:45

标签: java swing applet colors

问候,

到目前为止,我的代码已编译,但它会从白色变为黑色,然后不想更改。 假设它应该从红色 - >橙色 - >绿色 - >粉红色 - >蓝色 - >黑色...

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

感谢您的帮助。

2 个答案:

答案 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循环。