[java] jak z danego wątku odwołać się do GUI z innego wątku?


(Scofield111) #1

Witam,

mam pewien problem, otóż muszę z bieżącego wątku (który był wywołany z wątku głównego) operować na GUI, które jest tworzone w wątku głównym.

Program piszę w NetBeans IDE 6.8 na linuksie i klasa główna wraz z GUI tworzona jest automatycznie. Swoją klasę tworzę w tym samym pliku i wygląda ona mniej więcej tak:

class Usuwanie extends Thread {

 public void run(){

 //Tutaj kod wątku

 }

}

Natomiast wywołanie tego wątku w wątku głównym wygląda tak:

Usuwanie del = new Usuwanie() ;

del.start() ;

del.join() ;

Załóżmy, że w klasie głównej jest pole tekstowe - JTextArea, które nazywa się "jTextArea1". Teraz mam pytanie, jak odwołać się do tego pola z klasy Usuwanie? I czy jest to w ogóle możliwe?


(Xwars) #2

W wygenerowanym kodzie jest np. coś takiego:

public class DesktopApplication1 extends SingleFrameApplication {

    @Override protected void startup() {

        show(new DesktopApplication1View(this));

    }

Popraw to na coś takiego:

public class DesktopApplication1 extends SingleFrameApplication {

     public DesktopApplication1View view1 = null;

    /**

     * At startup create and show the main frame of the application.

     */

    @Override protected void startup() {

         view1 = new DesktopApplication1View(this)

        show(view1);

    }

a później pobieraj, korzystając z tego, że ta klasa jest singletonem, np tak:

DesktopApplication1.getApplication().view1.jakaśoperacjanaformie()

Poza tym, jak modyfikujesz GUI z różnych wątków może być potrzebne użycie tego: http://java.sun.com/j2se/1.4.2/docs/api ... unnable%29


(Scofield111) #3

Dzięki wielkie za odpowiedź :slight_smile: Problem rozwiązany.