首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX,如何调整复选框的大小?

JavaFX,如何调整复选框的大小?
EN

Stack Overflow用户
提问于 2016-08-22 19:53:08
回答 1查看 2.3K关注 0票数 3

无论使用width/height、minWidth/minHeight还是maxWidth/maxHeight,我似乎都无法调整复选框的大小。更改最小宽度似乎仅影响节点填充

代码语言:javascript
复制
package checkboxtest;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class CheckBoxTest extends Application {

    @Override
    public void start(Stage primaryStage) {

        CheckBox checkBoxResize = new CheckBox("Resize");
        checkBoxResize.setMinWidth(300);
        checkBoxResize.setMinHeight(300);

        CheckBox checkBoxNoResize = new CheckBox("No Resize");

        StackPane root = new StackPane();
        root.getChildren().add(checkBoxResize);
        root.getChildren().add(checkBoxNoResize);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello Checkbox!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
EN

Stack Overflow用户

发布于 2016-08-22 20:11:52

复选框中的“方框”和“标记”(即复选标记或勾号)由CSS确定。两者都呈现为带有填充的区域,以确定其大小;标记使用SVG形状呈现复选标记。因此,要更改大小,您需要更改应用于这些对象的填充。

来自modena.css的默认值为

代码语言:javascript
复制
.check-box > .box {
    /* ... */
    -fx-padding: 0.166667em 0.166667em 0.25em 0.25em; /* 2 2 3 3 */
}
.check-box > .box > .mark {
    /* ... */
    -fx-padding: 0.416667em 0.416667em 0.5em 0.5em; /* 5 5 6 6 */
    -fx-shape: "M-0.25,6.083c0.843-0.758,4.583,4.833,5.75,4.833S14.5-1.5,15.917-0.917c1.292,0.532-8.75,17.083-10.5,17.083C3,16.167-1.083,6.833-0.25,6.083z";
}

因此,要将大小增加12倍,您可以使用:

代码语言:javascript
复制
.big-check-box > .box {
    -fx-padding: 2em 2em 3em 3em ;
}
.big-check-box > .box > .mark {
    -fx-padding: 5em 5em 6em 6em; 
}

下面的SSCCE,上面的CSS (第二个代码块)在一个文件“big-check-box.css”中:

代码语言:javascript
复制
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class BigCheckBox extends Application {

    @Override
    public void start(Stage primaryStage) {
        CheckBox checkBox = new CheckBox("Regular");
        CheckBox bigCheckBox = new CheckBox("Big");
        bigCheckBox.getStyleClass().add("big-check-box");
        VBox root = new VBox(5, checkBox, bigCheckBox);

        root.setPadding(new Insets(20));
        Scene scene = new Scene(root);
        scene.getStylesheets().add("big-check-box.css");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

给出

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39078867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档