Cześć, co prawda problem jest wytłumaczony na StackOverflow jednak przykłady tam zawarte są dla mnie zbyt skomplikowane i nie mogę na ich podstawie zrozumieć problemu.
A problem przedstawia się następująco - t.wait() za każdym razem rzuca wyjątek java.lang.IllegalMonitorStateException. Czy ktoś mógłby powiedzieć mi jak to na prawić i przede wszystkim - dlaczego tak się dzieje i jak uniknąć tego typu błędów w przyszłości? Poniżej zamieszczam kluczową część kodu, jeżeli zajdzie taka potrzeba zamieszczę całą resztę. Z góry dziękuję!
public class ColorAction implements ActionListener
{
public ColorAction(Color c, Color d, Color e)
{
bgc1 = c;
bgc2 = d;
bgc3 = e;
}
public void actionPerformed(ActionEvent event)
{
Timer t = new Timer();
for (int i=0; i<1000; i++)
{
try
{
buttonPanel.setBackground(bgc1);
t.wait(60);
buttonPanel.setBackground(bgc2);
t.wait(60);
buttonPanel.setBackground(bgc3);
t.wait(60);
}
catch (InterruptedException x)
{
buttonPanel.setBackground(Color.BLACK);
System.out.println(x);
}
}
}
private Color bgc1, bgc2, bgc3;
}
niezdecydowany