У меня проблемы с игрой, которую я делаю.Я пытаюсь угаснуть JLabel, используя Таймер.До сих пор мне удавалось установить прозрачность JLabel, и я смог создать рабочий таймер.Но почему-то я не могу их объединить.Я могу установить для фона JLabel значение
l.setBackground(new Color(0, 0, 0, 200));
(желательно, чтобы JLabel изменил цвет, конечно), и это работает.JLabel прозрачен.Но я не смог поместить его в таймер, чтобы цвет исчезал:
public static void fadeLabel(JLabel lab, int steps, int target) {
class fade extends Thread {
public void run() {
Timer t = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(lab.getBackground().getAlpha());
lab.setBackground(new
Color(lab.getBackground().getRed(),
lab.getBackground().getGreen(),
lab.getBackground().getBlue(),
lab.getBackground().getAlpha() + steps));
if (lab.getBackground().getAlpha() == target) {
((Timer) e.getSource()).stop();
}
}
});
t.start();
}
}
new Thread(new fade()).start();
}
Вместо этого он просто переходит от черного к прозрачному.Ничего промежуточного.Также выдает ошибку java.lang.IllegalArgumentException: Color parameter outside of expected range: Alpha
.Тем не менее, я установил шаг на -5 (скорость, с которой он исчезает, в этом случае исчезает, поскольку он отрицательный), и если вы помните, я устанавливаю альфа на то, что делится на пять, и я такжеиметь средство проверки, когда он достигает цели, чтобы он останавливал таймер при достижении этой цели.Я что-то не так делаю?Является ли фоновое обновление JLabel слишком быстрым, чтобы его показывать?Любая помощь будет отличной.
Редактировать: Я исправил java.lang.IllegalArgumentException: Color parameter outside of expected range: Alpha
.Но другой о том, что JLabel не исчезает, все еще там, и я не знаю, как это исправить.