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

Vlastník

Zobrazeno 9 zpráv z 9.
//= 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.
Canvas musis rucne pridat v kontroleru na nejakej pane/box.
No mně jde právě o to přidání, scrollPane.getChildren().add(canvas) nefunguje.
A pridavas to v kontroleru pres JavaFX vlakno pomoci tridy Platform?
Podařilo se mi to přidat do VBoxu, do ScrollPane to prostě nejde, což opravdu nechápu. Jak to přidávám jsem tu psal už 2x.
Stejně mi ta JavaFX přijde nedovařená a to je to už 2. verze, není tam ani MessageBox, což mě dost zaráží.
Canvas je hlavne urceny na neco jineho nez delani GUI pres FXML. Je to plocha
urcena k vykreslovani setjne jako v HTML5 s trochu jinymi zakonitostmi. Cili to
Canvas API nepouzivas ve spravnem kontextu (to bude tim ze prechazis ze
Swingu?)
Pokud potrebujes v JavaFX kreslit at uz "controls" nebo graficky primitiva, tak
nepotrebujes Canvas. Pro graficky primitiva se pouziva Group a pro controls jsou
layout manazery.
MessageBox se da udelat pres Scene nebo Stage (nevim, za celou dobu jsem to
nepotreboval ale jde to).
Jenže já dělám level editor a potřebuji jak klasická tlačítka, tak
canvas ve ScrollPane, do kterého se kreslí výsledný level Že jsi nikdy nepotřeboval
MessageBox je zvláštní, používám na něj knihovnu třetí strany, ale je
ostuda, že to tam nemají.
To je spis otazka toho jak a jake tam nacpat layout manazery nez o pouziti
Canvas API. Tlacitka muzes nacpat do GridPane, a na samotnou mapu se ti hodi
TilePane, pripadne StackPane (do nej muzes nacpat kolik vrstev chces a pak je
prochazet napriklad pomoci udalosti mysi - kliknutim nebo koleckem).
Podivej se na tohle video:
http://www.youtube.com/watch?…
Vsimni si ze tam mam v pohode kombinaci "controls" i grafickych primitiv bez
pouziti Canvas API.
Tady je kod:
public class HoverBar extends FlowPane {
public HoverBar() {
super();
this.setStyle("-fx-background-color: gray;");
this.setPickOnBounds(true);
this.setOpacity(0);
setOnMouseEntered (new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent meEntered) {
if (isHover()) {
setOpacity(1);
}
}
});
setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent meExited) {
if (!isHover()) {
setOpacity(0);
}
}
});
}
}
Je to docela obycejna podtrida FlowPane do ktere muzes nacpat jakykoliv GUI prvek nebo graficky primitiva prave diky tomu ze v JavaFX snad vsechno co vidis dedi od Node. Ten HoverBar je pak nacpany do Group ktera je korenem grafu sceny v tom demu.
Zobrazeno 9 zpráv z 9.