Diskuze: JavaFX FXMLController
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
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.


Ahoj, rovnou říkám, že tohle je čistě můj názor na věc a od ostatních se může lišit.
Tento problém jsem řešil u svých projektů až do doby, kdy mě to přestalo bavit a napsal jsem na to knihovn, pomocí které se mi zobrazují různé kontrolery s parametry, které si nastavím
Pokud je to nějaký menší projekt do šuplíku, tak si založíš nějakou sdílenou třídu (já to obvykle nazývám Service, kterou budeš injektovat do ostatních kontrolerů. V této Service si vytvoříš metody pro přepravu dat a budeš mít vystaráno.
Pokud jak říkáš teprve začínáš, může to celé znít dost náročně na tak "malý" problém. Podle mě je toto celkem zásadní věc a v nějakém větším systému, pokud se něco jako předávání parametrů navrhne špatně, jde celý systém do kytek.
Pokud něco není jasné, ptej se tady dál. Pokud ti zajde dostatečně
daleko, hodím sem i tu knihovnu, pokud budeš mít zájem 
V OOP se takovému přenosu dat říká přepravka (messenger) a je dost
možné, že je to právě podobná knihovna, o které mluvil Petr
Štechmüller.
Nejsem si jistý, jestli v FX existuje něco podobného, jako ve Springu Model.
Zkus se podívat po tomhle.
Pokud by neexistovalo nic podobného, řešil bych to osobně předáváním
Mapy Objektů, kde si pod nějakým klíčem předáš objekt a pak ho v
dalším Stagy takto aplikuješ, ale je to dost kostrbaté řešení.
Co by se mě osobně líbilo a hlavně bys to mohl řešit skutečně
objektově, tak bys mohl předávat nějaký property file, ve kterém bys
právě takto předával tyto hodnoty. Určitě bys tím i zabezpečil a v
mnohých případech i urychlil přenos.
Dejme tomu, že bys to ošetřil tak, že bys nemusel stejné hodnoty nikdy
posílat víckrát.
Takže řešení je z mého pohledu několik.
Mapa objektů, Messenger (čili knihovna nebo klidně i nějaká support class,
o které mluvil Petr), File transport nebo jestli přímo v FX existuje něco
jako model, tak model.
Ahoj, a díky za reakce. Ono bohužel malý problém časem vytvoří velký
problém 
Tak jsem nad tím zase seděl par hodin a hledal a hledal a našel toto
řešení:
Které je funkční a vypadá vcelku funkčně i na vetší projekt (teda
alespoň myslím
)
public class SampleController implements Initializable {
@FXML
private Pane pContent;
@Override
public void initialize(URL location, ResourceBundle resources) {
Service.getInstance().currentCountry().setCountry("Belgium");
Service.getInstance().currentCountry().setPosition("Europe");
}
public void handleButtonAction(ActionEvent actionEvent) throws IOException {
URL url = getClass().getResource("Sub1.fxml");
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(url);
fxmlLoader.setBuilderFactory( new JavaFXBuilderFactory());
pContent.getChildren().clear();
pContent.getChildren().add((Node) fxmlLoader.load(url.openStream()));
}
}
public class Sub1Controller implements Initializable {
public Label lb2;
public Label lb1;
@Override
public void initialize(URL location, ResourceBundle resources) {
lb1.setText(Service.getInstance().currentCountry().getCountry());
lb2.setText(Service.getInstance().currentCountry().getPosition());
}
}
public class Service {
private final static Service instance = new Service();
public static Service getInstance(){
return instance;
}
private Country country = new Country();
public Country currentCountry(){
return country;
}
}
public class Country {
private SimpleStringProperty country = new SimpleStringProperty();
private SimpleStringProperty position = new SimpleStringProperty();
public String getPosition() {
return position.get();
}
public void setPosition(String position) {
this.position.set(position);
}
public void setCountry(String country) {
this.country.set(country);
}
public String getCountry() {
return country.get();
}
}
Zobrazeno 4 zpráv z 4.