Java - использование потока с графическим интерфейсом - PullRequest
0 голосов
/ 13 августа 2011

У меня проблема с моим графическим интерфейсом, когда я пытаюсь изменить цвет кнопки через 2 секунды после ее нажатия. Я хочу щелкнуть белую квадратную кнопку, затем появится цвет, и через 2 секунды я хочу, чтобы он вернулся к исходному цвету (белому). Как этого добиться?

Мой код на клике:

cards[index].setBackground(cards[index].getTrueColor());
try
{
    Thread.sleep(2000);
    cards[cardPos.get(0)].setBackground(Color.white);
}
catch(Exception e) {}

Таким образом, это восходит к белому цвету, но в некоторых случаях не ждет секунд. Очень ценю небольшую помощь здесь. Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 августа 2011

Это требует Timer вместо Thread.sleep. Вы захотите установить таймер с задержкой в ​​2 секунды, а затем сбросить цвет кнопки. Например, в Swing:

// onButtonClick
final Card card = cards[index];
card.setBackground(card.getTrueColor());
new Timer(2000, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // Change color back
        card.setBackground(Color.WHITE);
    } 
}).start();
1 голос
/ 13 августа 2011

Вы можете использовать класс AsynkTask в Android.Вы можете использовать метод onPreExecute для выполнения начальной задачи, а затем вы можете подождать и изменить цвет кнопки через 2 секунды, это можно сделать в методе doInBackground, и вы можете опубликовать результаты в пользовательском интерфейсе, вызвав метод publish progress, и, наконец,можно использовать метод onPostExecute.

http://developer.android.com/reference/android/os/AsyncTask.html

...