Odświeżanie jPanel

0

problem moze banalny, mam klase:
public class mainWindow extends JFrame
{
...
w konstruktorze:
panel = new panel(10,10,12); //klasa dziedziczaca po jPanel, zawierajaca pole typu ThreadControler
//dodatkowo kilka buttonow i pola tekstowe
}

public class panel extends JPanel{
ThreadControler tc;
class ThreadControler implements Runnable{

	public void run()
	{..
                  repaint(); //zarowno z jak i bez dziala tak samo
             }
    }
   public void paintComponent(Graphics g)
{
         ....
     }

}

teraz po wcisnieci buttona chce uruchomic watek, ktory ma odswiezac jPanel, problem w tym, ze watek odswieza cale okno, zabierajac np focus z pol tekstowych, probowalem klase panel implementowac jako runable, skutek ten sam, pytanie: jak to zrobic, zeby odswiezalo panel a nie cale okno?

0

a w jakim celu chcez to odświeżać? Generalnie jak zmieniasz cos z komponentach swingu, które są już wyświetlone to powinienes to robic poprzez wrzucenie do kolejki wątków:

SwingUtilities.invokeLater(new Runnable(){
public void run(){
//tu działasz na komponencie, dodajesz usuwasz i to powinno zalatwic sprawe odswiezania jezeli nie to tutaj wywołaj jpanel.repaint() i ewentulanie jpanel.validate()
}
});

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