Java wywołanie metody z innej klasy

0

Witam
Dopiero się uczę, więc nie posiadam wystarczającej wiedzy.
Napisałem klasę w której przypuścimy są pola z zmiennymi typu "integer", dla przykładu positionX, oraz positionY;
W innej klasie która nazywa się "MouseHandler" która implementuje interfejs "MouseMotionListener" są 2 metody które są wywoływane w zależności zastosowanie w tym przypadku ruchu myszki metoda moveMouse(MouseEvent e), chciałbym żeby ta metoda na bieżąco przekazywała najlepiej cały obiekt "e" do klasy w której są 2 zmienne "positionX oraz... Y", odpada stworzenie w pierwszej klasie metody statycznej bo nie moge w tedy edytować tych dwóch zmiennych. Czy w jakiś sposób mogą pomóc interfejsy ?

1

Rozumiem wszytko za wyjątkiem

odpada stworzenie w pierwszej klasie metody statycznej bo nie moge w tedy edytować tych dwóch zmiennych

Czemu uważasz że metodą statyczną nie możesz edytować dwóch zmiennych? Ja kiedyś napisałem kod który metodą statyczną edytował trzy zmienne (nie żebym był dumby z tamtego kodu :( )

1
plugan300 napisał(a):

Napisałem klasę w której przypuścimy są pola z zmiennymi typu "integer", dla przykładu positionX, oraz positionY;

Jeśli twierdzisz, że napisałeś kod, to go pokaż od razu i nie czekaj na nasze pytania.

1
  1. MouseHandler może mieć "uchwyt" do obiektu klasy z atrybutami positionX/Y (np. przekazywany w konstruktorze)
  2. Klasa z atrybutami positionX/Y może być MouseHandlerem.
  3. MouseHandler może mieć uchwyt do jakiegoś medium pośredniczącego w komunikacji z obiektem "klasy z atrybutami positionX/Y" (szyna esb, kolekcja listenerów których należy powiadomić o zmianie stanu etc.)
    ...
4

@plugan300 problem polega na tym ze nie rozumiesz czym różni sie KLASA od OBIEKTU i bez tego nie da się napisać żadnego sensownego kawałka kodu. Klasa określa TYP, tak jak np. String czy Integer, to są klasy. W praktyce w kodzie pracujesz z OBIEKTAMI bo np. masz stringa String ala = "ala ma kota" oraz stringa String sierotka = "sierotka ma rysia". Jakiekolwiek dyskutowanie o polach albo metodzie w klasie nie ma żadnego sensu, bo przecież wartości pól w obiekcie ala i w obiekcie sierotka są zupełnie inne i w ogóle ze sobą nie związane. Analogicznie jak zrobisz Integer x = 1; oraz Integer y = 2; to znów wartości pół tych obiektów nie maja żadnego związku ze sobą.

Teraz więc zrobiłeś KLASĘ, spoko, ale potrzebujesz OBIEKTU tej klasy zeby tego jakoś uzywać. Musisz taki obiekt gdzieś stworzyc i przekazać go do twojego Listenera.

* istnieje bardzo wąska kwestia tzw. metod statycznych niepowiązanych z obiektem (np. jakieś Integer.parse... które ze stringa robi integera) ale na początku w ogóle nie powinieneś o nich myśleć bo zastosowanie jest bardzo szczególne i w 99% przypadków nie chcesz mieć static.

0

@Shalom: akurat wiem czym różni się klasa od obiektu takie podstawy to mam w garści

@yarel: ale Klasa implementuje interfejs MouseMotionAction który cały czas w momencie przemieszczania myszki wywołuje metode "moved" i potrzebuje cały czas aktualizować w innej klasie atrybuty positionx i Y

0

@plugan300: która część mojej odpowiedzi albo @Shalom nie jest dla Ciebie jasna?

1

Pokaż jakiś kod, bo ciężko zgadnąć, o czym rozmawiamy. Dlaczego w klasie MouseHandler nie masz tych pól? Miałbyś łatwiejszy dostęp.

0
plugan300 napisał(a):

@yarel: ale Klasa implementuje interfejs MouseMotionAction który cały czas w momencie przemieszczania myszki wywołuje metode "moved" i potrzebuje cały czas aktualizować w innej klasie atrybuty positionx i Y

To nie możesz, żeby ta inna klasa implementowała interfejs MouseMotionAction i wtedy w metodzie moved aktualizowała swoje pola positionX i positionY? No i jeszcze obiekt tej klasy trzeba zarejestrować jako słuchacza zdarzeń z interfejsu MouseMotionAction, pewnie w jakimś okienku, kontenerze itd. przy pomocy metod w stylu addMouseListener.

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