Я хочу сделать очень простое GUI приложение.
Я пытаюсь изменить цвет фона трех кнопок, нажимая четвертую. Тип изменения цвета, который я хочу, является последовательным: когда я нажимаю четвертую кнопку, первая сразу меняет свой цвет, затем происходит период в четыре секунды, а вторая кнопка также меняется, после этого наступает другой период времени и, наконец, последняя кнопка (третья) изменяется.
Большое дело в том, что я могу добиться этого, если я вставлю код изменения цвета в конструктор класса, но не смогу, если я помещу код в кнопка Action Listener Definition. Если я попробую последний способ, изменение цвета будет выполнено по-другому: периоды времени go сначала, а затем вдруг три кнопки меняют свой цвет. Я не хочу этого, поскольку он не последовательный.
Мне нужно, чтобы он работал должным образом (последовательно) при нажатии четвертой кнопки.
Вот мой неработающий код:
public class exalumno extends JFrame {
private JButton b1;
private JButton b2;
private JButton b3;
private JButton b4;
public exalumno() {
setTitle("test");
setSize(400, 100);
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
b1 = new JButton("a");
b2 = new JButton("b");
b3 = new JButton("c");
b4 = new JButton("changeColors");
add(b1);
add(b2);
add(b3);
add(b4);
ActionListener jk = new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
try {
b1.setBackground(Color.WHITE);
Thread.sleep(4000);
b2.setBackground(Color.RED);
Thread.sleep(4000);
b3.setBackground(Color.ORANGE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
b4.addActionListener(jk);
setVisible(true);
}
public static void main (String[]args){
new exalumno();
}
}
Как вы видите, я реализую периоды с Thread.sleep()
.
Я был бы очень признателен за вашу помощь. Заранее спасибо.