Diskuze: Práce s grafickými komponenty
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 21 zpráv z 21.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
S JavaFX mám jen minimální zkušenosti, ale aspoň se pokusím
- máš ty data v něčem co
implementuje interface Observable? S tím si totiž standardní widgety v JavaFX
rozumějí out-of-box - prostě máš data třeba v
ObservableList<TvůjTyp> a ty zobrazuješ v
ListView<TvůjTyp>.
To propojení zajistíš pomocí setItems(ObservableList) na ListView a máš
hotovo. Když pak něco přidáš/upravíš/odebereš v ObservableList tak se
to automaticky projeví v ListView.
Bohužel GridPane tuto metodu neobsahuje
Navíc o tento problém mi nešlo,
to se dá obejít. Jde o to, že jiná než JavaFX vlákna nemohou manipulovat s
grafickými komponenty, jinak se vyvolá výjimka uvedená výše. Vše už jsem
ale vyřešil, takže mám už zase jiný problém 
Neposkytl jsi žádné bližší info, takže jsem možná mimo, ale ty používáš na zobrazení tabulky dat GridPane? Nebylo by lepší TableView?
S tebou souhlasím. S TableView to bylo porprvé težké, ale naučil jsem se to a přišel jsem i na to, jak obnovit v něm data.. table.getColumn().clear(); a následně znovu přidat všechny sloupce: table.getColumn().addAll(column1, column2, column3);
Máš pravdu, to bude lepší
Už jsem překopal aplikaci, která teď používá TableView. Jak už
jsem říkal, vynáším do tabulky objekty(data). Pokud se změní seznam
těchto objektů, data v tabulce se automaticky obnoví. Pokud však změním
jenom nějaký vnitřní stav objektu, nic se samozřejmě nestane. Potřeboval
bych tedy nějakou metodu na refreshování tabulky, nebo lépe jen jednoho
sloupce. Bohužel s tím nemám ale žádné zkušenosti, takže zase prosím o
pomoc.
K tomu slouží JavaFX properties. Vystavíš fieldy objektu, které chceš aby TableView sledovalo pomocí property getterů, např máš-li třídu Person a v ní String field name, tak udělej getter
public SimpleStringProperty nameProperty()
{
return name;
}
a mělo by to snad fungovat.
Tak to nějak nefunguje. Pokud změním hodnotu SimpleStringProperty
pomocí metody set, v tabulce se nic nezmění. Ale podle všech zdrojů by to
mělo fungovat, takže se ještě pokusím to rozchodit
Díky za radu!
obnovení tabulky jsem vyřešil jednoduše 
table.getColumn().clear();
table.getColumn().addAll(column1, column2, column3);
A máš to v nějaké té Observable kolekci? Protože jestli ne, tak to fungovat nebude.
Tak jasně, takhle už jsem to měl taky. Jde o to, že vlákno poběží na
pozadí programu a potřebuju, aby bylo co nejvýkonnější. Beru to jako
poslední řešení 
Hmm tak pak nevím, taky může jít o nějaký bug, četl jsem kdesi že konkrétně okolo TableView nějaký takový byl, jestli už je to opravené to nevím.
Taky je problém v tom, že se mi místo hodnot do tabulky vypisuje metoda toString() z SimpleStringProperty. Takže místo "hodnota" mám v tabulce něco jako "SimpleStringProperty[value="hodnota"]".
Hele tak nejspíš jsem tě nechtíc mystifikoval zastaralým postupem - dneska už se koukám v JavěFX dělá zas všechno jinak - http://docs.oracle.com/…rmediate.htm#… je dobrý tutoriál jak se s TableView zachází podle nejnovějších principů. Mimochodem, časté překopávání JavaFX je jedním z důvodů, proč jsem tomu nikdy nevěnoval víc než letmou pozornost...
V tom článku je ukázán de-facto stejný postup, jaký jsi mi předložil
Stále ale nefunguje
obnovování dat. Zkusím nějaké uvedené zdroje, třeba se to povede 
Princip je prakticky stejný, změnila se jmenná konvence - teďka ty
gettery a settery odpovídají více klasickým Java Bean konvencím, takže
začínají get a set. Zkusil jsem si narychlo zplácat jednoduchý Address book
podle toho jak je to v tom tutotiálu co jsem sem hodil, a funguje to dle
očekávání, takže tam někde máš nějakou zradu 
Funguje i obnovování dat? Tím myslím, když změníš vnitřní stav zobrazovaného objektu, změní se i data v tabulce?
Juch
Tak konečně to
snad bude fungovat! Šel jsem na to přes vlastní TableCell a vypadá to
dobře. Teď se ale zase nějak pomátla databáze, ze které data vytahávám,
takže práce zase dost
Díky všem za pomoc!
Ahoj, chtěl bych se zeptat jak si se vypořádal s tou chybou, co zmiňuješ
nahoře.Mám trošku jinou: java.lang.IllegalStateException: Not on FX
application thread; currentThread = pool-2-thread-1
Jedná se o jeden prográmek, kde po každé minutě to spustí metodu, která
zjistí jestli je nějkaý čas uvnitř textfieldu stejný s realným časem a
pustí mi to dialogové okno, --> Alert. A okno mi to nespustí a napíše
chybu.
Zobrazeno 21 zpráv z 21.
