2016-08-22 6 views
1

Я не могу изменить размер флажка, независимо от ширины/высоты, minWidth/minHeight или maxWidth/maxHeight. Изменение ширины мин только кажется, эффект узлов обивкиJavaFX, как изменить размер флажка?

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); 
    } 

} 
+1

Вы пробовали использовать CSS? [Возможно, связанный ответ.] (Http://stackoverflow.com/questions/12038179/javafx-2-0-how-to-change-the-size-of-the-radio-buttons-circle-with-css) – Spotted

ответ

3

В «окне» и «метка» (то есть флажок или тик) в флажке определяется CSS. Оба они отображаются как области с отступом для определения их размеров; метка использует SVG-форму для визуализации галочки. Поэтому, чтобы изменить размер, вам нужно изменить применяемое к ним дополнение.

Значения по умолчанию, от modena.css, являются

.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, вы можете использовать:

.big-check-box > .box { 
    -fx-padding: 2em 2em 3em 3em ; 
} 
.big-check-box > .box > .mark { 
    -fx-padding: 5em 5em 6em 6em; 
} 

Следующая SSCCE с выше CSS (второй блок кода) в файле "большой чек-box.css":

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); 
    } 
} 

дает

enter image description here

+0

Мне это нравится, но я искал прямое решение Java. Я ищу, чтобы это было динамичным и пыталось контролировать, что с CSS будет просто боль, ИМО. – Quirk

+0

Единственный способ сделать это динамически - это получить «box» и «mark» с помощью 'lookup' и вызвать' setStyle': ie 'checkBox.lookup («. Box »). SetStyle (« fx-padding: ...; ");' и аналогично 'checkBox.lookup (". mark ")'. Или, я не пробовал это, но, возможно, '((Region) checkBox.lookup (". Box ")). SetPadding (новые вставки (24, 36, 24, 36)); –

Смежные вопросы