2016-08-22 4 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; 
} 

上記CSSで次SSCCE、(第2コードブロック)を "big-check-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を使ってそれを制御しようとすると、苦痛になるだろう、IMO。 – Quirk

+0

これを動的に行う唯一の方法は、 'lookup'を介して' box'と 'mark'を取得し、' setStyle'を呼び出すことです:setStyle( "fx-padding: ...; ");'と同様に、 'checkBox.lookup("。mark ")'と同様です。または、これを試したことはありませんが、おそらく、((Region)checkBox.lookup( "。box"))setPadding(新しいInsets(24,36,24,36));など –

関連する問題