IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: FXML - jak předat hodnoty z tabulky oknu pro upravení údajů

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Marty
Člen
Avatar
Marty:15.8.2018 16:42

Ahoj,

dělám něco na způsob tohoto upomínače - https://www.itnetwork.cz/…ojeni-vrstev , ale místo ListView tam mám TableView.
Přidávání a mazání uživatelů mám přesně na způsob jako je v odkazovaném tutoriálu (který jsem prošel až do úplného konce) a v článku je právě zmíněno, že kvůli natahování lekce tam není řešeno právě to upravování.

Pro upřesnění uvedu zjednodušenou strukturu projektu:
FXMLDocumentCon­troller - tabulka se sloupci, tlačítka přidat, upravit a smazat a k nim vytvořené ActionEventy
SpravceUzivatelu - ObservableLis­t<Uzivatel> a metody add a remove
Uzivatel - SimpleInteger­Property, SimpleStringPro­perty, SimpleObjectPro­perty<Pohlavi­Enum>, konstruktor, getry a setry
PridatUzivate­leOkno - to se akcí u tlačítka v FXMLDocumentCon­trolleru otevře a po potvrzení vrátí objekt zpět do akce, kde se SpravcemUzivatelu přidá do seznamu
UpravitUzivate­leOkno - ...* (toto je zatím kopie souboru PridatUzivate­leOkno)
___

  • Tady právě potřebuji označený řádek v tabulce posílat tomuto oknu, abych mohl tyto údaje předvyplnit a zase zpět vrátit akci, která by to pomocí setrů upravila.

Zkoušel jsem různě zkombinovat kód u akce pro smazání a přidání, ale to nefunguje podle představ.

Uzivatel vybrany = (Uzivatel)uzivateleTabulka.getSelectionModel().getSelectedItem();
public Uzivatel getVybrany() {
            return vybrany;
}

Tímhle jsem myslel, že by si okno mohlo z akce vytáhnout vybraný řádek, ale asi to není úplně možné, když je to okno modulární a akce v pozadí čeká na potvrzení.

Poradil by, prosím, někdo? :)

 
Odpovědět
15.8.2018 16:42
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:15.8.2018 16:59

Existují tzv. parametry.
Tak přetěž metodu, kterou voláš okno. Ať ji voláš s parametry. No a když zavoláš akci pro úpravu, tak jestli jsi to dělal podle tutoriálu, tak tě zajímá jen položka, která je v viewListu či tabulce vybraná (ze selectionModelu zavoláš getSelectedIndex() metodu) a pomocí tohoto indexu si ve třídě správce uživatelů najdeš potřebnou položku.
No a tu předáš jako parametr do metody, kterou vyvoláváš okno a už si s tím můžeš dokonce hrát, že pokud zadáš místo tlačítka přidat, tlačítko upravit (v podstatě když bys nepřetěžoval metodu, ale dal jí dva parametry - jméno a datum narození, tak bys u tlačítka přidat volal tuto metodu s null parametry), tak se ti už předvyplní kolonky.

A nebo se můžeš na podmínku úplně vykašlat a metodu přidat budeš volat s prázdnými řetězci a ty vždy zobrazíš v tom dialogovém okně.
Je to na tobě.
Ale tohle je už práce s OOP a praktická část. Opět musím uznat, že to udělal David moc dobře - nejdřív vysvětlil OOP, pak začal s FX a krásně začal tak, abys mohl programovat právě objektově.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
15.8.2018 16:59
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Marty
Člen
Avatar
Odpovídá na Lubor Pešek
Marty:17.8.2018 5:10

Ajo, to mi hned nedošlo, pročítal jsem všechny možné nabízené metody a hledal nějakou, která by se mi hodila.

Ano, neznám zatím žádný podobný web, kde by to bylo tak krásně vysvětlené jako od Davida (a ostatních samozřejmě taky) tady. :)

 
Nahoru Odpovědět
17.8.2018 5:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.