Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

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

Java Java FXML - jak předat hodnoty z tabulky oknu pro upravení údajů American English version English version

Aktivity (1)
Avatar
Marty
Člen
Avatar
Marty:15. srpna 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. srpna 16:42
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:15. srpna 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í
+1 bodů
Řešení problému
Nahoru Odpovědět 15. srpna 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. srpna 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. srpna 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.