Wywołanie GUI z main a dostęp do komponentów Swing

Wywołanie GUI z main a dostęp do komponentów Swing
C1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:3
0

Cześć,
piszę prostą aplikację graficzną i natknąłem się na następujące zagadnienie.

Mam trzy klasy:

  • zawierającą metodę main
  • klasę z gui rozszerzającą JFrame
  • klasę rozszerzającą wątek

z klasy głównej wołam tylko

Kopiuj
public class MyMain {
    public static void main(String[] args) {
    	Gui myGui= new Gui();
    }
}

w klasie Gui mam pole testowe public static JTextArea textArea oraz podpiętego pod przycisk actionListenera za pomocą którego uruchamiam wątek. Jak z poziomu klasy wątku wpisać coś do textArea? Aktualnie odnoszę się poprzez Gui.textArea czyli po nazwie klasy. Czy skoro utworzyłem instancję klasy Gui w klasie głównej to czy nie powinienem odwoływać się do instancji tej klasy myGui.textArea? Jak to powinno być wywoływane i obsłużone "po Bożemu"?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Powinieneś do klasy wątku przekazać referencje do kontrolera twojego GUI.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

Rółnież komponent JTextArea textArea nie powinien być statyczny.

C1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:3
0
Shalom napisał(a):

Powinieneś do klasy wątku przekazać referencje do kontrolera twojego GUI.

Obawiam się, że nie zrozumiałem... :/
do Gui jest implementowany ActionListener
i dla przycisku start wygląda on następująco:

Kopiuj
startButton.addActionListener(this);
[...]
public void actionPerformed(ActionEvent e) {
	Object source = e.getSource();
	 
    if(source == startButton){
		try {
		    clientThread = new Klient();
		    clientThread.start();
		} catch (Exception e1) {
			textArea.append(e1.getMessage());
		}
    }
[...]

W jaki sposób do wątku mam przekazać referencję?

airborn napisał(a):

Rółnież komponent JTextArea textArea nie powinien być statyczny.

To w jaki sposób powinienem wystawić ten textArea? napisać osobną funkcję która będzie go obsługiwała po stronie klasy?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

@cinek1105
lekcja na dziś: MVC / MVP
lekcja na jutro: Zasada jednej odpowiedzialności


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
C1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:3
0

Się robi :) Dzięki

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.