watki- funkcja paint(), obsługi klawiatury , elementow gui

0

mam następującą klase:

"public class Pilka_klient extends JPanel implements KeyListener"

w jej wnetrzu mam funkcje:

  • paint()
  • elementy gui - JButon , JLabel
    -implementacje KeyListener
public void paint(Graphics arg0)
{
arg0.drawLine(0*14+10, 2*14+10, (0+1)*14+10, (2-1)*14+10);
//funckja ma z 20 lini kodu ale reszta jest nie istotana co do tego tematu
}

Klasa musi realizować takie zadnie:np. po naciśnięciu przycisku z klawiatury "8" powinna narysować linie do góry , analogicznie po naciśnięciu "2" -linię w dół.

Dopóki nie nacisnę żadnego przycisku(JButon) program działa prawidłowo - rysuje linie.

Problem polega na tym że jak kliknę którykolwiek przycisk (JButon) to przestaje działać obsługa klawiatury(interfejs KeyListener)- program nie rysuje

Myślę,że program nie działa prawidłowo bo nie ma podziału na wątki. Może mi ktoś podać przykład jak to zrobić ( to moja 3 aplikacja w javie ).

0

Oczywiście, że masz już jakiś podział na wątki bo samo utworzenie i odpalenie okna tworzy osobny wątek poruszający GUI (oprócz tego wątku, który kopnął w ruch kod w main). Przede wszystkim pokaż kod listenera bo to jest niemal na 100% przyczyna blokowania. Wszystko co tam jest i długo się wykonuje należy wywoływać jako zadanie np. Swingworkera lub osobny wątek, a w nim wszelkie wywołania metod Swinga odpalasz też jako zadania interfejsu Runnable przez przez invokeLater() i po sprawie.

0

http://wklej.to/wQ0Nl

Powyzej kod mojego klienta.

1

Raczej przyczyną jest to, że po naciśnięciu przycisku focus nadal na nim pozostaje. W obsłudze przycisku wywołaj requestFocusInWindow() na rzecz okna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1