dodání ihned! nové
Hledáme programátora do rostoucího týmu ITnetwork.cz, 100% home office, 100% flexibilní pracovní doba. Více informací
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
BF
Avatar
Vlastimil Juračka:7.1.2017 16:16

Ahoj mam dotaz. Ve svém programu bych potřeboval při zmenšení okna automatickou změnu velikosti písma v buttonu. Zkrátka aby se text vešel do buttonu i při jeho zmenšení... Díky moc za každou odpověď :)

 
Odpovědět
7.1.2017 16:16
Avatar
Odpovídá na Vlastimil Juračka
Vlastimil Juračka:7.1.2017 16:45

Zapoměl jsem úplně zmínit, že dělám v JavaFX a bylo by dobré kdyby to šlo udělat přes Scene Builder, ale určitě uvítam jakýkoli nápad :)

 
Nahoru Odpovědět
7.1.2017 16:45
Avatar
Petr Štechmüller
Překladatel
Avatar
Odpovídá na Vlastimil Juračka
Petr Štechmüller:10.1.2017 10:39

Ahoj, ve SceneBuilderu tohle neuděláš. Po chvíli googlení a testování Ti můžu ukázat akorát ukázkový kód, zbytek už z toho musíš vykuchat sám.

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    private static DoubleProperty fontSize = new SimpleDoubleProperty(10);
    private static IntegerProperty blues = new SimpleIntegerProperty(50);

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button("Resizable color");
        Parent parent = new StackPane(btn);

        Scene scene = new Scene(parent);

        fontSize.bind(scene.widthProperty().add(scene.heightProperty()).divide(50));
        parent.styleProperty().bind(Bindings.concat("-fx-font-size: ", fontSize.asString(), ";"
            ,"-fx-base: rgb(100,100,",blues.asString(),");"));

        primaryStage.setScene(scene);
        primaryStage.setWidth(800);
        primaryStage.setHeight(600);
        primaryStage.show();
    }
}

Toto když zkompiluješ a spustíš, tak dostaneš aplikaci, ve které se bude zvětšovat/zmenšovat tlačítko podle velikosti okna.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
10.1.2017 10:39
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Petr Štechmüller
Vlastimil Juračka:10.1.2017 13:53

Jo díky moc nějak to zkusím :)

 
Nahoru Odpovědět
10.1.2017 13:53
Avatar
xxgregy479xx
Člen
Avatar
xxgregy479xx:17.2.2017 15:42

Ahoj

Nieco podobne som uz riesil, mozes sa inspirovat mojim (trosku nepeknym) kodom:

public void setDynamicSizedButtons() {
        anchorContentPane.getScene().getWindow().widthProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
                if (((Double) newSceneWidth / 40) > 20 && ((Double) newSceneWidth / 40) < 40) {
                    squareBtns();
                    double fontSize = (((Double) newSceneWidth / 34));
                    double responsiveWidth = (((Double) newSceneWidth / 2.5));
                    String style = "-fx-font-size: " + fontSize + "px;" +
                            "-fx-pref-width: " + responsiveWidth + "px;";
                    tasks.get(0).getMenuButton().setStyle(style);
                    tasks.get(1).getMenuButton().setStyle(style);
                    tasks.get(2).getMenuButton().setStyle(style);
                    tasks.get(3).getMenuButton().setStyle(style);
                } else if (((Double) newSceneWidth / 40) < 20) {
                    verticalBtns();
                    String style = "-fx-font-size: " + 30 + "px;" +
                            "-fx-pref-height: " + 100 + "px;";
                    tasks.get(0).getMenuButton().setStyle(style);
                    tasks.get(1).getMenuButton().setStyle(style);
                    tasks.get(2).getMenuButton().setStyle(style);
                    tasks.get(3).getMenuButton().setStyle(style);
                }
            }
        });
    }
 
Nahoru Odpovědět
17.2.2017 15:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.