Моя проблема: Эффективный способ для программы задержать в моем сценарии.Jbutton flash между двумя цветами фона
Мой сценарий: Я делаю викторину для короткого проекта, длинный рассказ. На вопрос отвечает, когда пользователь нажимает на одну из четырех кнопок, на которых есть ответ. Тогда мой класс quizengine вызывает метод рисования, показанный здесь. После этого он начинает ссылаться на другие методы, ответственные за появление следующего вопроса. Теперь я хочу, чтобы кнопка переключалась между двумя цветами с уменьшением временных интервалов.
Что есть я пытался до сих пор: Сначала я поставил JOptionPane между методом paintbutton и метод, который изменяет интерфейс на следующий вопрос только, чтобы увидеть, если кнопка изменит цвет. Это было успешно. Конечно, это было не мое намерение, я хотел всего лишь промежуток времени. Затем я попытался использовать Thread.Sleep. Хотя программа будет ждать, прежде чем перейти к следующему вопросу, изменение цвета не было видно. Наконец, я попробовал реализовать таймер (возможно, не правильно), хотя, хотя он изменил цвет, программа пошла дальше и перешла к следующему вопросу.
Мои хочет быть код
/* Paints the button pressed red or green
* Green if the anwser is correct red if
* its false
*
* @param int bnr the number of the button
* @param boolean corr true if correct false if false :D
*/
public static void paintbutton(int bnr,boolean corr) {
for (int i=10;i>1;i--){
b[bnr-1].setBackground(null);
//wait for i*100 milliseconds
b[bnr-1].setBackground(corr?Color.green:Color.red);
}
}
Используйте Swing 'Timer', см. [Как использовать таймеры Swing] (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) для получения более подробной информации. – MadProgrammer
Мои ставки были там как Что ж. Как я уже сказал, это мне не удалось, потому что я не использовал его правильно. Я пытаюсь понять это на данный момент. Пример того, как его использовать, мой сценарий поможет мне понять. –
А на самом деле это может дать мне проблемы, потому что остальная часть кода будет продолжена, и это приведет к изменению текста вопроса. По крайней мере, это, по-видимому, проблема =/ –