37 CSSã«ããUIã³ã³ãããŒã«ã®ã¹ã¿ã€ã«èšå®
ãã®ãããã¯ã§ã¯ãJavaFXã§ã«ã¹ã±ãŒãã»ã¹ã¿ã€ã«ã»ã·ãŒã(CSS)ã䜿çšããæ¹æ³ãããã³ã¢ããªã±ãŒã·ã§ã³ã®ã«ã¹ã¿ã å€èгãäœæããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ã¹ã¿ã€ã«ã»ã·ãŒãã«ã¯ããŠãŒã¶ãŒã»ã€ã³ã¿ãã§ãŒã¹èŠçŽ ã®å€èгãå¶åŸ¡ããã¹ã¿ã€ã«å®çŸ©ãå«ãŸããŸãã JavaFXã¢ããªã±ãŒã·ã§ã³ã§CSSã䜿çšããæ¹æ³ã¯ãHTMLã§CSSã䜿çšããæ¹æ³ãšäŒŒãŠããŸãã JavaFX CSSã¯ãW3C CSSããŒãžã§ã³2.1ã®ä»æ§(http://www.w3.org/TR/CSS21/ããå
¥æå¯èœ)ã«åºã¥ããŠããŸãããããŒãžã§ã³3ã®çŸåšã®ä»æ§ã®äžéšããç¹å®ã®JavaFXæ©èœããµããŒãããæ¡åŒµæ©èœã远å ãããŠããŸãã
JavaFX CSSã䜿çšããŠUIãã¹ããã³ã°ãããšã䜿çšãããŠããã¹ã¿ã€ã«ã»ã·ãŒãã倿Žããã ãã§ãå³37-1ã«ç€ºãUIãå³37-2ã«ç€ºãUIã«å€æŽã§ããŸãã
ããã©ã«ãã®ã¹ã¿ã€ã«ã»ã·ãŒã
JavaFXã¢ããªã±ãŒã·ã§ã³ã®ããã©ã«ãã®ã¹ã¿ã€ã«ã»ã·ãŒãã¯ãJavaFXã©ã³ã¿ã€ã JARãã¡ã€ã«ã®jfxrt.jarå
ã«ããmodena.cssã§ãã ãã®ã¹ã¿ã€ã«ã»ã·ãŒãã«ãããã«ãŒãã»ããŒãããã³UIã³ã³ãããŒã«ã®ã¹ã¿ã€ã«ãå®çŸ©ãããŸãã ãã®ãã¡ã€ã«ãåç
§ããã«ã¯ãJava Development Kit (JDK)ãã€ã³ã¹ããŒã«ãããŠãããã£ã¬ã¯ããªã®äžã«ãã\jre\lib\extãã£ã¬ã¯ããªã«ç§»åããŸãã æ¬¡ã®ã³ãã³ãã䜿çšããŠãJARãã¡ã€ã«ããã¹ã¿ã€ã«ã»ã·ãŒããæœåºããŸãã
jar xf jfxrt.jar com/sun/javafx/scene/control/skin/modena/modena.css
å³37-3ã«ãããã©ã«ãã®ã¹ã¿ã€ã«ã»ã·ãŒãã䜿çšããå Žåã«ãµã³ãã«UIãã©ã®ããã«è¡šç€ºããããã瀺ããŸãã
ã¹ã¿ã€ã«ã»ã·ãŒãã®äœæ
ç¬èªã®ã¹ã¿ã€ã«ã»ã·ãŒãã1ã€ä»¥äžäœæããããã©ã«ãã®ã¹ã¿ã€ã«ã»ã·ãŒãå
ã®ã¹ã¿ã€ã«ããªãŒããŒã©ã€ãããããç¬èªã®ã¹ã¿ã€ã«ã远å ã§ããŸãã éåžžãäœæããã¹ã¿ã€ã«ã»ã·ãŒãã®æ¡åŒµåã¯.cssã«ãªããJavaFXã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ã»ã¯ã©ã¹ãšåããã£ã¬ã¯ããªã«é
眮ãããŸãã
ã¹ã¿ã€ã«ã»ã·ãŒãcontrolStyle1.cssã«ãããå³37-1ã«ç€ºãã¹ããã³ã°ãé©çšãããŸãã ã¹ã¿ã€ã«ã»ã·ãŒãcontrolStyle2.cssã«ãããå³37-2ã«ç€ºãã¹ããã³ã°ãé©çšãããŸãã
ã¹ã¿ã€ã«ã»ã·ãŒãã¯ãå³37-1ã«ç€ºãSceneãªããžã§ã¯ãã«é©çšãããŸãããã®å Žåãpathã¯ãã¹ã¿ã€ã«ã»ã·ãŒãã®å Žæã衚ããã£ã¬ã¯ããªæ§é ã§ãããŸããstylesheetã¯ãã¹ã¿ã€ã«ã»ã·ãŒãã®ååã§ãã ããšãã°ãå³37-2ã®ã¹ã¿ã€ã«ã»ã·ãŒãã®ãã¹ãšååã¯ãuicontrolcss/controlStyle2.cssã§ãã
ã¹ã¿ã€ã«ã®å®çŸ©
ã¹ã¿ã€ã«å®çŸ©ã¯ãã¹ã¿ã€ã«ã®åå(ã»ã¬ã¯ã¿ãšãåŒã°ããŸã)ãããã³ã¹ã¿ã€ã«ã®ããããã£ãèšå®ããäžé£ã®ã«ãŒã«ã§æ§æãããŸãã å®çŸ©ã®ã«ãŒã«ã¯äžã«ãã³({})ã§å²ãŸããŸãã äŸ37-2ã«ã.custom-buttonãšããååã®ã¹ã¿ã€ã«ã®å®çŸ©ã瀺ããŸãã
äŸ37-2 ã¹ã¿ã€ã«å®çŸ©ã®ãµã³ãã«
.custom-button {
-fx-font: 16px "Serif";
-fx-padding: 10;
-fx-background-color: #CCFF99;
}
ããŒã:
ãã©ã³ãã®ãµã€ãºã¯ããã€ã³ã(pt)ãŸãã¯ãã¯ã»ã«(px)åäœã§æå®ã§ããŸãã è§£å床ã¯96ããã/ã€ã³ã(dpi)ãåæãšããŠããããã1pxã¯0.75ptã«ãªããŸãã
ã»ã¬ã¯ã¿
è€æ°ã®ã¿ã€ãã®ã¹ã¿ã€ã«ãå®çŸ©ã§ããŸãã ã¹ã¿ã€ã«ã®ã¿ã€ãããšã«ã»ã¬ã¯ã¿ã«å¯Ÿããç¬èªã®è¡šèšæ³ããããŸãã
ã¹ã¿ã€ã«ã»ã¯ã©ã¹ã¯ã¯ã©ã¹åã«å¯Ÿå¿ããŠããŸãã æ £äŸã«ãããè€æ°ã®åèªã§æ§æãããã¹ã¿ã€ã«ã»ã¯ã©ã¹åã®å Žåãåèªéã«ãã€ãã³(-)ã䜿çšãããŸãã ã¹ã¿ã€ã«ã»ã¯ã©ã¹ã»ã»ã¬ã¯ã¿ã®å é ã«ã¯ããã(.)ãä»ããŸãã
ã¯ã©ã¹ã»ã»ã¬ã¯ã¿ã®äŸ:
.button .check-box .scroll-bar
ãŸããããŒãã®IDãä»ããŠããŒãã«é¢é£ä»ããããã¹ã¿ã€ã«ãå®çŸ©ããããšãã§ããŸãã IDã¯ãããŒãã®setId()ã¡ãœããã䜿çšããŠèšå®ããŸãã ã¹ã¿ã€ã«åã¯ãå
é ã«ããã·ã¥èšå·(#)ãä»ããIDã§ãã ããšãã°ãID my-buttonãæã€ããŒãã¯ãã¹ã¿ã€ã«#my-buttonã䜿çšããŠã¹ããã³ã°ãããŸãã
IDã¹ã¿ã€ã«ã»ã»ã¬ã¯ã¿ã®äŸ:
#my-button #shaded-hbox
è€åã»ã¬ã¯ã¿ã䜿çšããããšãã§ããŸãã äžéšã®ã¯ã©ã¹ã«ã¯ãäžäœã¯ã©ã¹ãšåŒã°ããç¬èªã®ã¹ã¿ã€ã«å®çŸ©ãèšå®ã§ããèŠçŽ ãå«ãŸããŸãã ããšãã°ãå€ãã®UIã³ã³ãããŒã«ã«ã¯ãã©ãã«çšã®äžäœã¯ã©ã¹ããããŸãã ãããã®å®çŸ©ã¯ãã¹ããŒã¹ã«ãã£ãŠåºåããããã¯ã©ã¹ã®ã»ã¬ã¯ã¿ãšäžäœã¯ã©ã¹ã®ã»ã¬ã¯ã¿ã«ãã£ãŠèå¥ãããŸãã
äžäœã¯ã©ã¹ã®ã»ã¬ã¯ã¿ã®äŸã¯ã次ã®ãšããã§ãã
.check-box .label .check-box .box .radio-button .dot
æ¬äŒŒã¯ã©ã¹ã䜿çšãããšãããŒãã®ç¶æ (ããŒãã«ãã©ãŒã«ã¹ãåœããã¿ã€ãã³ã°ãªã©)ãã«ã¹ã¿ãã€ãºã§ããŸãã ãããã®å®çŸ©ã¯ãã³ãã³(:)ã«ãã£ãŠåºåããããã¯ã©ã¹ã®ã»ã¬ã¯ã¿ãšç¶æ ã®ååã«ãã£ãŠèå¥ãããŸãã
ç䌌ã¯ã©ã¹ã®ã»ã¬ã¯ã¿ã®äŸã¯ã次ã®ãšããã§ãã
.radio-button:focused .radio-button:hover .scroll-bar:vertical
ã«ãŒã«ãšããããã£
ã¹ã¿ã€ã«å®çŸ©ã®ã«ãŒã«ã«ãããã¯ã©ã¹ã«é¢é£ä»ããããããããã£ã«å€ãå²ãåœãŠãŸãã ã«ãŒã«ã®ããããã£åã¯ãã¯ã©ã¹ã®ããããã£ã®ååã«å¯Ÿå¿ããŠããŸãã è€æ°ã®åèªãå«ãŸããããããã£åã¯è¡šèšæ³ã«ããããã€ãã³(-)ã䜿çšããŠåèªãåºåãããŸãã JavaFXã¹ã¿ã€ã«ã»ã·ãŒãå
ã®ã¹ã¿ã€ã«ã®ããããã£åã®å
é ã«ã¯-fx-ãä»ããããŸãã ããããã£ã®ååãšå€ã¯ã³ãã³(:)ã«ãã£ãŠåºåãããŸãã ã«ãŒã«ã¯ã»ãã³ãã³(;)ã§çµãããŸãã
ã«ãŒã«ã®äŸã¯ã次ã®ãšããã§ãã
-fx-background-color: #333333; -fx-text-fill: white; -fx-alignment: CENTER;
.rootã¹ã¿ã€ã«ã»ã¯ã©ã¹ã¯ãSceneã€ã³ã¹ã¿ã³ã¹ã®ã«ãŒãã»ããŒãã«é©çšãããŸãã ã·ãŒã³ã»ã°ã©ãã®ãã¹ãŠã®ããŒãã¯ã«ãŒãã»ããŒãã®äžäœããŒãã§ããããã.rootã¹ã¿ã€ã«ã»ã¯ã©ã¹å
ã®ã¹ã¿ã€ã«ã¯ä»»æã®ããŒãã«é©çšã§ããŸãã
.rootã¹ã¿ã€ã«ã»ã¯ã©ã¹ã«ã¯ãUIå
ã§ã®äžè²«æ§ãä¿æããããã«ä»ã®ã¹ã¿ã€ã«ã§äœ¿çšã§ããããããã£ãå«ãŸããŸãã ããšãã°ãããããã£-fx-focused-baseã¯.rootã¹ã¿ã€ã«å
ã«å®çŸ©ãããŠããŸãã ãã®ããããã£ã¯ãä»ã®UIã³ã³ãããŒã«ã®ã¹ã¿ã€ã«ã«ããããã®ã³ã³ãããŒã«ã«ãã©ãŒã«ã¹ãåœãŠããããšãã®è²ãšããŠäœ¿çšãããŸãã æ¬¡ã®å®çŸ©ã¯ãã¯ã©ã¹CheckBoxã®ã¹ã¿ã€ã«ã§ãã®ããããã£ã䜿çšããæ¹æ³ã瀺ããŠããŸãã
.check-box:focused {
-fx-color: -fx-focused-base;
}
ã·ãŒã³ã®ã¹ããã³ã°
.rootã¹ã¿ã€ã«ã»ã¯ã©ã¹ãã«ã¹ã¿ãã€ãºããããšã«ãããUIã®å€èгãç°¡åã«å€æŽã§ããŸãã ã¹ã¿ã€ã«ã»ã·ãŒãã®ãµã³ãã«ã§ã¯äž¡æ¹ãšãããã©ã³ãã®ãµã€ãºãšãã¡ããªãä»ã®è²ã®å°åºå
ãšãªãåºæ¬è²ãããã³ã·ãŒã³ã®èæ¯è²ãèšå®ãããŠããŸãã äŸ37-3ã«ãcontrolStyle2.cssã®.rootã¹ã¿ã€ã«ã瀺ããŸãã
äŸ37-3 controlStyle2.cssã®ã«ãŒãã»ã¹ã¿ã€ã«
.root{
-fx-font-size: 16pt;
-fx-font-family: "Courier New";
-fx-base: rgb(132, 145, 47);
-fx-background: rgb(225, 228, 203);
}
ãã®ã¹ã¿ã€ã«ã®ã¿ã䜿çšããŠãå³37-2ã®åºæ¬çãªå€èгãäœæããŸãã ãããå¯èœãªã®ã¯ãçµèŸŒã¿UIã³ã³ãããŒã«ã§ã¯ãã«ãŒãã»ããŒãã«èšå®ãããŠããããããã£ã䜿çšããŠç¬èªã®è²ãšãã©ã³ããå°åºããããã§ãã
ã¹ããã³ã°ã»ã³ã³ãããŒã«
䜿çšããŠããæ§ã ãªã³ã³ãããŒã«ã®ã¹ã¿ã€ã«ãå®çŸ©ããããšã«ãããUIãããã«ã«ã¹ã¿ãã€ãºã§ããŸãã ããã©ã«ãã®ã¹ã¿ã€ã«ã»ã·ãŒãã®å®çŸ©ããªãŒããŒã©ã€ãããããæ°ããã¯ã©ã¹ãŸãã¯IDã¹ã¿ã€ã«ãäœæã§ããŸãã ãŸããã³ãŒãå ã®ããŒãã®ã¹ã¿ã€ã«ãå®çŸ©ããããšãã§ããŸãã
ããã©ã«ãã®ã¹ã¿ã€ã«ã®ãªãŒããŒã©ã€ã
ã¹ã¿ã€ã«ã»ã·ãŒãã«ã¹ã¿ã€ã«ãçµã¿èŸŒã¿ãããã«ç°ãªãããããã£ãå²ãåœãŠãããšã«ãããããã©ã«ãã®ã¹ã¿ã€ã«ã»ã·ãŒãå
ã®ã¹ã¿ã€ã«ããªãŒããŒã©ã€ãã§ããŸãã äŸ37-4ã«ãcontrolStyle2.cssã®Buttonã¯ã©ã¹ã®ã¹ã¿ã€ã«ã瀺ããŸãã
äŸ37-4 ã¹ã¿ã€ã«ã®ãªãŒããŒã©ã€ã
.button{
-fx-text-fill: rgb(49, 89, 23);
-fx-border-color: rgb(49, 89, 23);
-fx-border-radius: 5;
-fx-padding: 3 6 6 6;
}
ãã®å®çŸ©ããããã©ã³ãã®è²ãæ ç·ã®è²ãæ ç·ã®ååŸããã³ããã£ã³ã°ãéžæãããŸãã ãã¿ã³ã®è²ãšã©ãã«ã®ãã©ã³ãã»ã¹ã¿ã€ã«ã¯ãäŸ37-3ã®.rootå®çŸ©ããéžæãããŸãã ãã®ã¹ã¿ã€ã«ãèšå®ããããã¿ã³ã¯ã次ã®ã€ã¡ãŒãžã®ããã«ãªããŸãã
å³button_style2.pngã®èª¬æ
ããŒã:
modena.cssã¹ã¿ã€ã«ã»ã·ãŒãã«å®çŸ©ãããŠããã¹ã¿ã€ã«ãã¯ã©ã¹å
ã«ãªãå Žåã¯ãã¹ã¿ã€ã«ã»ã·ãŒãå
ã§ã¹ã¿ã€ã«ãå®çŸ©ããäŸ37-6ã«ç€ºãããã«ãåã¯ã©ã¹ã»ã€ã³ã¹ã¿ã³ã¹ã«ãããå²ãåœãŠãŸãã ããšãã°ãã¬ã€ã¢ãŠãã»ãã€ã³ã«ã¯ãmodena.cssã¹ã¿ã€ã«ã»ã·ãŒãã«å®çŸ©ãããŠããã¹ã¿ã€ã«ããããŸããã HBoxãGridPaneãªã©ã®ã¯ã©ã¹ã®ã¹ã¿ã€ã«ã®äœæã®è©³çްã¯ããCSSã䜿çšããã¬ã€ã¢ãŠãã»ãã€ã³ã®ã¹ã¿ã€ã«èšå®ããåç
§ããŠãã ããã
ã¯ã©ã¹ã»ã¹ã¿ã€ã«ã®äœæ
ã¯ã©ã¹ã»ã¹ã¿ã€ã«ã®å®çŸ©ãã¹ã¿ã€ã«ã»ã·ãŒãã«è¿œå ããããšã«ãããã¯ã©ã¹ã»ã¹ã¿ã€ã«ãäœæã§ããŸãã äŸ37-5ã§ã¯ãcontrolStyle1.cssã§.button1ãšåŒã°ããæ°ããã¹ã¿ã€ã«ãå®çŸ©ããŠããŸãã
äŸ37-5 æ°ããã¹ã¿ã€ã«ã®å®çŸ©
.button1{
-fx-text-fill: #006464;
-fx-background-color: #DFB951;
-fx-border-radius: 20;
-fx-background-radius: 20;
-fx-padding: 5;
}
ãã®ã¹ã¿ã€ã«ã远å ããããã¿ã³ã¯ã次ã®ã€ã¡ãŒãžã®ããã«ãªããŸãã ã©ãã«ã®ãã©ã³ãã¯controlStyle1.csså
ã®.rootå®çŸ©ããéžæãããããšã«æ³šæããŠãã ããã
å³button_style1.pngã®èª¬æ
ãã®ã¯ã©ã¹ã»ã¹ã¿ã€ã«ãããŒãã«å²ãåœãŠãã«ã¯ãã¡ãœããã®getStyleClass().add()ã·ãŒã±ã³ã¹ã䜿çšããŸãã äŸ37-6ã«ããAcceptããã¿ã³ã«å²ãåœãŠããã.button1ã¹ã¿ã€ã«ã瀺ããŸãã
äŸ37-6 ã¯ã©ã¹ã»ã¹ã¿ã€ã«ã®å²åœãŠ
Button buttonAccept = new Button("Accept");
buttonAccept.getStyleClass().add("button1");
ããŒãã«è¿œå ããã¹ã¿ã€ã«ã¯çޝç©ããããšã«æ³šæããŠãã ããã .button1ã¯ã©ã¹ã»ã¹ã¿ã€ã«ãbuttonAcceptããŒãã«è¿œå ãããšããã®ããŒãã¯.buttonã¹ã¿ã€ã«ãš.button1ã¹ã¿ã€ã«ã®äž¡æ¹ã®ã«ãŒã«ã䜿çšããŠã¬ã³ããªã³ã°ãããŸãã
IDã¹ã¿ã€ã«ã®äœæ
ã¹ã¿ã€ã«ãäœæãããã®ã¹ã¿ã€ã«ãããŒãã«å²ãåœãŠãããšã«ãããåå¥ããŒãã®ã¹ã¿ã€ã«ãå®çŸ©ã§ããŸãã ã¹ã¿ã€ã«åã¯ãå
é ã«ããã·ã¥èšå·(#)ãä»ããIDã§ãã äŸ37-7ã§ã¯ã#font-buttonãšããååã®ã¹ã¿ã€ã«ã®å®çŸ©ãäœæããŠããŸãã
äŸ37-7 IDã¹ã¿ã€ã«ã®å®çŸ©
#font-button {
-fx-font: bold italic 20pt "Arial";
-fx-effect: dropshadow( one-pass-box , black , 8 , 0.0 , 2 , 0 );
}
ID font-buttonãå²ãåœãŠããããã¿ã³ã¯ã次ã®ã€ã¡ãŒãžã®ããã«ãªããŸãã
å³button_style_id.pngã®èª¬æ
äŸ37-8ã«ããã®IDã¹ã¿ã€ã«ãããŒãã«å²ãåœãŠãæ¹æ³ã瀺ããŸãã
ã³ãŒãå ã®ã¹ã¿ã€ã«ã®èšå®
ãŸããã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãå ã§ããŒãã®ã¹ã¿ã€ã«ã»ããããã£ãèšå®ããããšãã§ããŸãã ã³ãŒãå ã§èšå®ãããã«ãŒã«ã®æ¹ããã¹ã¿ã€ã«ã»ã·ãŒãã®ã¹ã¿ã€ã«ããåªå ãããŸãã äŸ37-9ã«ããã¿ã³ã®èæ¯è²ãšãã©ã³ãè²ã倿Žããæ¹æ³ã瀺ããŸãã
äŸ37-9 ã¹ã¿ã€ã«ã»ã€ã³ã©ã€ã³ã®å®çŸ©
Button buttonColor = new Button("Color");
buttonColor.setStyle("-fx-background-color: slateblue; -fx-text-fill: white;");
次ã®ã€ã¡ãŒãžã¯ããã¿ã³ãã©ã®ããã«è¡šç€ºããããã瀺ããŠããŸãã
å³button_style_inline.pngã®èª¬æ
远å ã®ãªãœãŒã¹
JavaFXã®ã¹ã¿ã€ã«ã»ã·ãŒãã®è©³çްã¯ãJavaFX CSSãªãã¡ã¬ã³ã¹ã»ã¬ã€ããåç §ããŠãã ããã
UIã³ã³ãããŒã«ã®ã¹ã¿ã€ã«èšå®ã®è©³çްã¯ããJavaFX UIã³ã³ãããŒã«ã®äœ¿çšããåç §ããŠãã ããã
ã¬ã€ã¢ãŠãã»ãã€ã³ã®ã¹ã¿ã€ã«èšå®ã®è©³çްã¯ããCSSã䜿çšããã¬ã€ã¢ãŠãã»ãã€ã³ã®ã¹ã¿ã€ã«èšå®ããåç §ããŠãã ããã
ãã£ãŒãã®ã¹ã¿ã€ã«èšå®ã®è©³çްã¯ããCSSã«ãããã£ãŒãã®ã¹ã¿ã€ã«èšå®ããåç §ããŠãã ããã




