Diskuze: Jak udělat, aby se dočasně jeden node vykresloval nad ostatními v JavaFX?
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Netusim, jak je to resene v javafx, ale budto tu figurku kresli az po tom, co se vykresli ostatni, pokud nad tim mas kontrolu a nebo hledej parametr ZOrder.
To bych musel u každého tahu kreslit celou šachovnici znovu, to je k ničemu. Zorder by měl řešit toFront(), ale prostě nefunguje ani mně ani ostatním na Stack Overflow, co to zkoušeli.
No, takové ruční řešení by bylo, že v momentě, kdy zaklikneš daný node, tak si vezmeš ObservableList<Node>, na kterém to máš uložené, daný objekt z toho vymažeš a pak ho tam znovu přidáš (tím ho přesuneš na konec seznamu v této kolekci a on se překreslí přes všechny na novo. A jelikož pracuješ s tou samou referencí, tak stále budeš mít nastavené parametry toho objektu).
figurka.setOnMouseClicked(evt -> {
sachovnice.getChildren().remove(evt.getSource());
sachovnice.getChildren().add((Node) evt.getSource());
});
Ale uznávám, není to úplně nejčistší Netuším, jestli ObservableList
nemá metodu, která by dokázala přehodit pořadí v tomto seznamu.
Každopádně je to zobrazováno jako bucket, takže ten první se zobrazí jako
první a následující ho překreslí....
Minimálně ti to bude fungovat, ale zkus pohledat optimálnější řešení.
Jak to, že mě to nenapadlo. Jasně, že to funguje - GUI je úplně
oddělené od virtuální šachovnice. Děkuji, pane.
Zobrazeno 5 zpráv z 5.