2xJFrame - komunikacaja

2xJFrame - komunikacaja
M1
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:33
0

Witam
Tworzę mały interfejs na projekt i mam mały problem.
Posiadam dwie ramki. Druga otwiera się po kliknięciu przycisku z pierwszej.
I chodzi o to że posiadam w publicznej klasie (pierwszej) kilka zmiennych które chciał bym przerzucić do drugiej ramki automatycznie po jej otworzeniu.

screenshot-20200309154117.png

Tutaj są te zmienne i je chce przerzucić do drugiej mojej ramki w której stworzyłem specjalnie po to klasę (z extends) i myślałem że po stworzeniu obiektu tej klasy będę miał dostęp do tych danych. Niestety tak nie jest.

screenshot-20200309154447.png

Co prawda w ramce drugiej widzę te zmienne (które są w ramce pierwszej). One istnieją i mam dostęp do funkcji. Ale nie przekazywane są wartości. Domyślnie jest null przekazany.

Jak sobie poradzić z tym ? Bo komunikację między ramkami będę musiał mieć na porządku dziennym w jedną i drugą stronę.
Z góry dziękuję za pomoc.

edytowany 1x, ostatnio: Maciej123321
hzmzp
Wklejaj kod nie screeny
szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 dni
  • Lokalizacja:Kraków
  • Postów:1694
2

Tak na szybko bo nie wnikałem co tam tworzysz to zrób konstruktor i przekaż tam te wartości.

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

W ogóle tak nie rób. Nie spinaj UI z logiką aplikacji! Nie trzymaj stanu aplikacji w kontrolkach. To się nie sprawdza i nie działa i działać nie będzie. Lekcja na dziś: MVC/MVP.
Jak zrobisz takiego potworka jak teraz to przy czymś więcej niż hello world będziesz musiał popełnić sudoku ;]


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
1

Zgadzam się z @Shalom .
Po drugie to przeczytaj coś rzetelnego o javie, zacznij pisać klasy z dużej litery ... nie zdradzę Ci wszystkich konwencji, poszukaj sam ;)
Zobacz jak się pisze klasy, np klasę z konfiguracją ...


Bo C to najlepszy język, każdy uczeń ci to powie
M1
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:33
0

Po Waszych radach jeszcze więcej niejasności niż wcześniej ;)
Mam co prawda wykupiony kurs Javy. Ale o czymś takim jak MVC/MVP nie było, albo nie doszedłem jeszcze.
Nie mniej dzięki za informacje na co zwrócić uwagę

AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
1
Maciej123321 napisał(a):

Po Waszych radach jeszcze więcej niejasności niż wcześniej ;)
Mam co prawda wykupiony kurs Javy. Ale o czymś takim jak MVC/MVP nie było, albo nie doszedłem jeszcze.
Nie mniej dzięki za informacje na co zwrócić uwagę

W początkującym/słabym kursie nie będzie o tym.
Klasę z konfiguracją powinno Ci się udać zrobić. i oczywiście użyć.


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

@Maciej123321: generalnie chodzi o to że kontrolki (jak twój Frame) służą do wyświetlania informacji, a nie do trzymania stanu aplikacji czy logiki. Wyobraź sobie że np. twój bank zamiast trzymać stan konta gdzieś w bazie, trzymałby go w formularzu który wyświetla się na stronie :D

Logika aplikacji to powinny być osobne klasy / osobne obiekty, które zajmują się trzymaniem "stanu" aplikacji i są jakoś spięte z interfejsem zeby to wyświetlać użytkownikowi. MVP to taki pattern gdzie masz M model czyli klasy opisujące logikę aplikacji (np. twoje połączenie do bazy danych), V czyli widok, to twoje ramki, okienka i takie sam oraz P prezenter czyli taki zestaw obiektów które zajmują się spinaniem ze sobą M i V. Np. ktoś klika w guzik w interfejsie, to powoduje akcje w Prezenterze, on to przekazuje do Modelu, model cośtam sobie robi (np. ładuje dane z bazy) i informuje Prezenter że ma dane do wyświetlenia, wtedy Prezenter ładuje te dane w odpowiednie miejsce w Widoku.

Czemu tak? Dzięki temu logika aplikacji w ogóle nie zależy od widoku! Mógłbyś przerobic teraz tą aplikacje na webową, albo na konsolową albo na cokolwiek innego, bo wystarczyłoby podmienić Widok na inny!


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
M1
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:33
0

@Shalom: To znaczy ja rozumiem samą idee i o co chodzi. Żeby oddzielić jak najbardziej to co wygląda od mechanizmu.I pod np.metodą "nasłuchującą" na zdarzenie nie było ileś set linijek kodu tylko kilka.

Muszę to przestudiować, a myślę że mój problem można rozwiązać w ten sposób: gdzie mam Buttona do otwarcia drugiej ramki. To w nim będzie wywołana wcześniej metoda do wyeksportowania danych do pliku txt.
Druga ramka po otwarciu automatycznie pobiera te dane i zapisuje u siebie w zmiennych.

ramka1(akcja Button) --> zapis do txt danych --> ramka2(otwarcie i odczyt danych)
Czy jest sens wgl robić takie rozwiązanie ?

Bo do tego co mówił AntyKtokolwiek, klasy konfiguracyjna.
Jeszcze nie doszedłem i nie przestudiowałem. Ogólnie znajomość składni leży i możliwości. Nie wiem jak to działa.
Usiądę do tego jutro/czwartek najwcześniej, przez te studia mało czasu

M1
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:33
0

Witam, nie wiem czy to był mój błąd i czy tak się robi. Ale ja robiłem to w następujący sposób że miałem:

Kopiuj
class A{
int zmienna;
}

class B { 
int zmienna2;
}

I próbowałem przesłać zmienna do zmienna2. Nie szło mi to za bardzo. Więc obszedłem problem robiąc klasę zagnieżdżoną.
Czyli

Kopiuj
class A{
int zmienna;
   classB{
   int zmienna2 = zmienna;
   }
}

I już wszystko działało.

Mam tylko takie pytanie.
Bo łączę się w apce z bazą danych.
I z poziomu NetBeansa jak klikam Run, to łączę się z bazą danych na serwerze.
Jednak jak wypalę apkę. To już mimo że nie ingeruje w kod. Apka przestaje działać.
Nie mam pojęcia o co chodzi. Czym to może być spowodowane ?

edytowany 2x, ostatnio: Shalom
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

Więc obszedłem problem robiąc klasę zagnieżdżoną.

Nie będę tego nawet komentować bo jest to tak głupie że brakło mi słów. Kolejna osoba do kolekcji nie rozumie czym różni się KLASA od OBIEKTU. Klasa to jest definicja TYPU danych. Coś jak Integer, String czy Boolean. Obiekt jest zmienna jakiegoś typu. W twoim przypadku możesz mieć tysiąc obiektów klasy A i tysiąc obiektów klasy B. Co wtedy wg ciebie znaczy przesłać zmienna do zmienna2? Która z tysiąca zmiennych ma zostać przesłana do którego tysiąca zmiennych2?

Jednak jak wypalę apkę.

Nie rozumiem co to znaczy wypale apke

Apka przestaje działać.

Co to znaczy przestaje działać? W ogóle się nie uruchamia? Uruchamia ale po jakimś czasie umiera? Jak ją w ogóle uruchamiasz? Jak masz jara to zrób łaskawie java -jar cośtam.jar w konsoli i będziesz widzieć przynajmniej czemu się wywaliło. Na pewno zbudowałeś tam fat jara z zależnościami (szczególnie ten driver jdbc tutaj istotny)?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom

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.