Diskuze: Pozadí dialogového okna (JavaFX)
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= 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.
Nemám to bohužel odzkoušené, ale mohlo by fungovat něco takového....
private Scene vytvorScenu() {
VBox box = new VBox();
box.setAlignment(Pos.CENTER);
box.setSpacing(20);
// Mřížka s TextFieldy a Labely
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setPadding(new Insets(10));
grid.setHgap(10);
grid.setVgap(10);
// Komponenty
final TextField hrac1TextField = new TextField();
final TextField hrac2TextField = new TextField();
Label hrac1Label = new Label("Jméno hráč 1");
Label hrac2Label = new Label("Jméno hráč 2");
Label warningLabel = new Label("Jména zadej bez diakritiky");
grid.add(hrac1Label, 0, 0);
grid.add(hrac1TextField, 1, 0);
grid.add(hrac2Label, 0, 1);
grid.add(hrac2TextField, 1, 1);
// Tlačítko
Button tlacitko = new Button("OK");
tlacitko.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
try {
hrac1 = hrac1TextField.getText();
hrac2 = hrac2TextField.getText();
hrac1 = hrac1.toLowerCase();
hrac2 = hrac2.toLowerCase();
hide();
} catch (IllegalArgumentException ex) {
System.out.println("Chyba: " + ex.getMessage());
}
}
});
box.getChildren().addAll(grid, tlacitko);
Scene scene = new Scene(box)
Image image = new Image(getClass().getResource("obrazky/pozadi.jpg").toString());
scene.setFill(new ImagePattern(image, 520, 520, 40, 40, false));
return scene;
}
Ke třídě ImagePattern máš dokumentaci zde: https://docs.oracle.com/…/api/toc.htm, doporučuji přečíst hlavně konstruktor kvůli tomu konstruktoru.
Kdybys použil FXML, tak by sis to mohl normálně naskinovat pomocí CSS, nejsem na JavaFx specialista ale vím že je tam nějaký speciální atribut. Jestli se dostanu dneska nějak rozumně domů tak to rozvedu.
Pokud si to dobře pamatuji, tak používat CSS by mělo jít i normálně bez FXML.
Edit:
Ukázka z https://docs.oracle.com/…/cssref.html:
Scene scene = new Scene(new Group());
scene.getStylesheets().add(“test.css”);
Rectangle rect = new Rectangle(100,100);
rect.setLayoutX(50);
rect.setLayoutY(50);
rect.getStyleClass().add("my-rect");
((Group)scene.getRoot()).getChildren().add(rect);
Nebo spíše lepší otázka... kam se má uložit test.css? mám ji uloženou ve složce, kde je i ta třída, a píše mi to do konzole:
WARNING: Resource "test.css" not found.
Do adresáře src/ jinak ten attribut je -fx-background-image, takže to nastylování pozadí scény by vypadalo třeba takto
.root {
-fx-background-image: url("cesta_k_obrázku");
}
Zobrazeno 8 zpráv z 8.