Jeden JLabel, w dwóch klasach...

Jeden JLabel, w dwóch klasach...
psc1997
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Cześć! :)
Mam mały problem, a właściwie jedno proste pytanko...
Mam dwie osobne klasy publiczne (dwa osobne pliki: Panel1.class i Klasa2.class)
W przykładowym pliku Panel1.class mam taki fragment kodu:

Kopiuj
JLabel Konsola = new JLabel("Ładowanie Konsoli... Poczekaj chwilkę :)");
add(Konsola);

Natomiast w drugiej publicznej klasie Klasa2.class chciałbym zmienić tekst wyświetlany w 'Konsoli' stworzonej w panelu 1 -

Kopiuj
Konsola.setText("Tekst z Klasy 2");

...
I moje pytanie brzmi następująco: Jak to zrobić?

Gdy chcę to zmienić tak po prostu, klasa druga nie rozpoznaje co to jest konsola, tzn. nie widzi jej... Jaki kod powinienem dodać do Klasy1/Klasy2 aby wszystko działało tak jak powinno? :)

N4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 193
0

A ja to sobie wykopię :D
A gdyby tak JLabel wstawić poza jakąkolwiek metodę i przed typem obiektu dać słówko kluczowe "public"?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Zupełnie źle. Niepotrzebnie upublicznisz komponent a i tak nie zadziała.

N4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 193
0

To może metoda public JLabel getLabel() ? Bo ja już nie wiem.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

Z metodą dostępową (powinna się raczej nazywać getKonsola()) jest dużo lepiej. Dodatkowo, obiekty typu Klasa2 powinny przechowywać referencję do klasy Panel1 (można np. przekazać referencję w konstruktorze).

Kopiuj
pan.getKonsola.setText("abrakadabra");
N4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 193
0

No! A myślałem już, że nie powinienem wypowiadać się publicznie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.