Przekazanie obiektu SWINGa. Jak?

0

Sorki jeżeli nietrafiłem z formuowaniem tematu:).
Problem mam następujący. Mam klase Okno i w niej mam zdefiniowane buttony, pola textowe itd. Klasa ta odpowiada tylko ze wygląd programu, wiec wszelkie działania na tych komponentach chciałbym robic w innej klasie. Więc tworze klasa KomponentyDzialanie, i w nich ustawiam np.

JTextField imie;...

public void ustaw()
{
imie.setText("Wpisz imie");
}

Tworze obiekt tej klasy i w klasie Okno wywołuje te metode, aby ustawic domyślny text dla pola imie. NIestety textu nie widac. No wiec próbuje przekazac obiekt klasy Okno dla klasy KomponentyDzialanie.

public JTextField setImie()
{
return imie;
}
a w klasie KomponentyDzialanie wywołuje te metode

JTextField imie;

this.imie = obiektKlasyOkno.setImie();

i potem próbuje wywołac metode ustaw, ale dalej nic sie nie pokazuje w tym polu.
Co robie nie tak?

0

Strasznie zamieszałeś. Musisz operować na tych samych obiektach jakie wstawiłeś do panelu.

private JTextField imie;
//gdzieś w funkcji, np w konstruktorze.
imie = new JTextField();
getContentPane().add(imie);

I teraz obiektowi KomponentyDzialanie musisz przekazać obiekt klasy okno.

//To jest w klasie KomponentyDzialanie
private Okno okienko;
public void Powiaz(Okno pokienko)
{
okienko=pokienko;
}

Powyższą metodę wywołujesz w funkcji main jak już obydwa obiekty będą utworzone.
I teraz musisz miec jeszcze zdefiniowaną metodę do ustawiania tekstu:

//w klasie Okno
public void Ustaw(String tekst)
{
imie.setText(tekst);
}

A wszystko wywołujesz gdzieś w klasie KomponentyDzialanie:

okienko.Ustaw("Wpisz Imie");

Pisałem z pamięci, mam nadzieję, że się gdzieś nie pomyliłem. To jest tylko jedna z możliwości rozwiązania problemu.

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