Java fx - Eventy – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java fx - Eventy – Java – Fórum – Programujte.comJava fx - Eventy – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
me.name0
Návštěvník
26. 5. 2016   #1
-
0
-

Mám grid pane a každé políčko obsahuje jeden obrázok. Pri kliklutí na hociktorý obrázok potrebujem tento obrázok zmeniť.

Zaregistoval som MousePressedEvent každého obrázka na jeden event handler  pretože obrázkov môže byť napríklad 100x100. Problémom ale je to že pri samotnom "handlovaní" neviem ktorý z obrázkov mám zmenit pretože jediný parameter metódy handle je parameter typu MouseEvent a tan neobsahuje informáciu o presnej poloho obrázka v gride.

Čiže by som potreboval niečo takéto:

@Override
public void handle(PolohaObrazku poloha){
         zmenObrazok(poloha);
}

Nahlásit jako SPAM
IP: 213.151.238.–
Matrix17
~ Anonymní uživatel
300 příspěvků
4. 6. 2016   #2
-
0
-

Však pokud má každej obrázek svůj vlastní handler, "víš", na který uživatel kliknul a akorát ho obnovíš nebo vyměníš...

Ale podle popisu to vypadá jako by ses snažil zprácovávat jen události ze všech a pak zkoušel určit, co vlastně tu událost vyhodilo. Taky by to šlo ale tahle cesta by ti dala zbytečně moc práce.

Zkus to jak jsem ti naznačil. Každý obrázek bude mít vlastní handler, který bude dělat akci, kterou chceš. Tj. nebudeš to zpracovávat centrálně ale každej obrázek se "obslouží sám".

Nahlásit jako SPAM
IP: 213.226.237.–
me.name0
Návštěvník
4. 6. 2016   #3
-
0
-

#2 Matrix17

Diki

Vyriešil som to tým že kažy obrázok má svoj handler, ktorý dostane pozíciu obrázka ako parameter konštruktora, vypadá to že to funguje

No nedalo by sa to spravit nejako elegantnejšie použitím java fx custom events? 
Problém je že som nenašiel žiaden tutorial kde by som pochopil ako custom events implementovať, ani na oracle dokumentacii...

Nahlásit jako SPAM
IP: 213.151.238.–
Matrix17
~ Anonymní uživatel
300 příspěvků
4. 6. 2016   #4
-
0
-

#3 me.name
Jakou komponentu používáš na vykreslení obrázků? Má každej obrázek vlastní komponentu?

Nahlásit jako SPAM
IP: 213.226.237.–
me.name0
Návštěvník
5. 6. 2016   #5
-
0
-

#4 Matrix17
Moju vlastrnú triedu, ktorá rozširuje ImageView

Každé miesto v gridPane má jeden objekt tejto triedy, každý objekt má jeden obrázok

Nahlásit jako SPAM
IP: 213.151.238.–
Matrix17
~ Anonymní uživatel
300 příspěvků
5. 6. 2016   #6
-
0
-

#5 me.name
Aha tak v tom případě, mě už vůbec nenapadá na co potřebuješ tu pozici obrázku. Dyť ta tvá třída by měla mít už v konstruktoru nějakou doménovou třídu nebo něco, co má kompletní informace k tomu, co chceš zobrazovat.

Tj. jediný co pak musíš udělat je třeba tohle:

final MyImageView prvekGridu = new MyImageView(tridaSInformacemaOObrazku);

prvekGridu.setOnMouseClicked(new EventHandler<MouseEvent>()
{
  @Override
  public void handle(MouseEvent event)
  {
    prvekGridu.aktualizujObrazek(novyObrazek);
  }
});


Případně do toho handleru můžeš hodit jinou třídu, která ten novej obrázek bude mít v sobě a na základě něčeho ti dá takovej, jakej potřebuješ. Ale nevím, jak přesně ten program, co děláš funguje ani čeho přesně chceš dosáhnout ani jak ty obrázky prohazuješ.

Nahlásit jako SPAM
IP: 213.226.237.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý