Diskuze: Automatická velikost textu v Buttonu
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
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.
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
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.
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);
}
}
});
}
Zobrazeno 5 zpráv z 5.