Marmite
#programowanie #java #netbeans Robię właśnie aplikację w Swingu i chciałem się podpytać o dobre praktyki. Generalnie czy jest jakaś przeszkoda (poza tym że to brzydkie jak cholera) w operowaniu bezpośrednio na obiektach które Swing dodaje do klasy (przykładowo, powiedzmy, na żywca odwoływać się do

this.jLabel1
), czy raczej powinienem mieć jakąś klasę, której pola byłyby zbindowane z polami Swingowymi (albo chociaż z ich wartościami, cokolwiek) - o ile jest to w ogóle możliwe? (a wydaje mi się że to byłoby chyba najczystsze rozwiązanie) Czy moze jeszcze inaczej?
  • Najlepsze
  • Wszystkie komentarze
hellah
@Marmite: Ja zawsze tworzyłem swoje klasy, które dziedziczyły np. po JLabel i to na nich operowałem (w sensie na obiektach utworzonych z tych klas). To w jaki sposób to robisz, to chyba bardziej zagadnienie projektowe więc odsyłam do poczytania o wzorcach projektowych.
Marmite
Marmite Autor
0
@hellah: (#) No właśnie znajomość wzorców to jedno, a praktyka drugie w tym przypadku - na co dzień operuję w JSie i tam panuje zasada, ze jeśli korzystam z frameworka MV*, to nie grzebię bezpośrednio w polach, tylko wszystko odczytuję z modelu. Mimo że mógłbym. Ciekawym czy i tutaj jest taka zasada i, jeśli tak, to jak ją zastosować już czysto technicznie (bo najchętniej tobym po prostu stworzył i zinstancjonował
hellah
@Marmite: Co do korzystania np. z MVC, to praktycznie każda klasa Swingowa ma swój interfejs, który jest modelem. Na przykład JTable ma interfejs TableModel. Tworząc JTable możesz korzystać ze swojego modelu, który zaimplementowałeś (na bazie TableModel) być może wtedy osiągniesz, to o co Ci chodzi.
k.....n
k.....n
@Marmite: dobrą praktyką jest porzucenie swinga i programowanie w JavaFX... olej tego starocia zanim się do niego przyzwyczaisz!
Marmite
Marmite Autor
0
@kradzionyLogin: (#) Nie wiem czy mam czas na poznawanie od kuchni nowych narzędzi, to projekt na uczelnię, GUI mam już zrobione, cała logika będzie się odbywać poza Swingiem, więc już nie ma chyba sensu przerzucać się na coś innego
Marmite
Marmite Autor
0
@Marmite: (#) Dla potomnych zostawiam rozwiązanie:

otóż należy zaimportować do klasy, której pola chcemy zbindować,