Как я могу изменить цвет фона Java-апплета? - PullRequest
0 голосов
/ 20 июля 2009

Привет,

Пока мой код компилируется, но он меняет цвет с белого на черный, а затем не хочет меняться. Предположительно, он должен измениться с красного-> оранжевый-> зеленый-> розовый-> синий-> черный ..

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 ]

1 голос
/ 20 июля 2009

Что вам нужно сделать, это сохранить переменную-член 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();
    }
}
0 голосов
/ 20 июля 2009

Происходит то, что вы перебираете все цвета сразу, каждый раз, когда запускается действие btnNext. Он проходит так быстро, что вы не видите других цветов.

То, что я хотел бы сделать, - это иметь переменную, которая отслеживает, в какой позиции массива вы находитесь, и увеличивать эту переменную, когда пользователь нажимает следующий, а затем менять фон на этот цвет. Вы должны избавиться от цикла for внутри вашего actionPerformed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...