日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第3部分

發布時間:2023/12/3 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第3部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javafx 自定義控件

嗨,經過與同事的討論,我今天決定展示css方法并不是唯一可用于創建自定義控件的方法。 當然,它允許提供一些外觀擴展點,但是可以使用代碼API使用相同的方法(與向JavaFX的轉換)一起使用。

這是圖形初始化方法,通過調用JavaFX對象API,我已替換了CSS初始化代碼(現已注釋掉)。

private void initGraphcis() {// frame = new Region();// frame.getStyleClass().setAll("frame");frame = new Circle();frame.setFill(FRAME_FILL);shadow = new DropShadow();shadow.setBlurType(BlurType.ONE_PASS_BOX);shadow.setColor(Color.rgb(0, 0, 0, 0.4));frame.setEffect(shadow);frame1 = new Circle();// frame1.getStyleClass().setAll("frame1");frame1.setFill(FRAME1_FILL);frame1.setStroke(FRAME1_STROKE);frame1.setStrokeWidth(2.0);frame2 = new Circle();// frame2.getStyleClass().setAll("frame2");frame2.setFill(FRAME2_FILL);frame2.setStroke(FRAME2_STROKE);frame3 = new Circle();// frame3.getStyleClass().setAll("frame3");frame3.setFill(Color.web("#c44f1a"));line = new SVGPath();// line.getStyleClass().setAll("line");line.setContent("M 0.75,1.806272 C 0.75,1.806272 67.422114,-2.659598 118.06708,1.085452 130.59357,2.011752 166.81696,11.039202 185.35089,11.189052 206.02921,11.356252 242.24677,2.052122 255.84883,1.085452 304.58057,-2.377808 372.89963,1.806272 372.89963,1.806272");line.setFill(Color.web("#ffffff00"));line.setStroke(Color.web("#4d4d4d"));line.setStrokeWidth(1.5);line1 = new SVGPath();// line.getStyleClass().setAll("line1");line1.setContent("M 0.75,1.806272 C 0.75,1.806272 67.422114,-2.659598 118.06708,1.085452 130.59357,2.011752 166.81696,11.039202 185.35089,11.189052 206.02921,11.356252 242.24677,2.052122 255.84883,1.085452 304.58057,-2.377808 372.89963,1.806272 372.89963,1.806272");line.setFill(Color.web("#ffffff00"));line.setStroke(Color.web("#141414"));line.setStrokeWidth(1.5);lightEffect = new Ellipse();lightEffect.setFill(Color.rgb(255, 255, 255, 0.7));lightEffect.setEffect(new BoxBlur(90, 90, 5));lightEffect.setCache(true);getChildren().setAll(frame, frame1, frame2, frame3, line, line1, lightEffect );}

節點大小的管理如下(無論如何,css方法都應做同樣的事情)。

private void resize() {size = getWidth() < getHeight() ? getWidth() : getHeight();// frame.setPrefSize(size, size);frame.setRadius(size / 2.0);frame.setTranslateX(size / 2.0);frame.setTranslateY(size / 2.0);frame1.setRadius(frame1Ratio * size / 2.0);frame1.setTranslateX(size / 2.0);frame1.setTranslateY(size / 2.0);shadow.setOffsetX(size * shadowXOffset);shadow.setOffsetY(size * shadowYOffset);shadow.setRadius(size * shadowSizeOffset);shadow.setSpread(0.099);frame2.setRadius(frame2Ratio * size / 2.0);frame2.setTranslateX(size / 2.0);frame2.setTranslateY(size / 2.0);frame3.setRadius(frame3Ratio * size / 2.0);frame3.setTranslateX(size / 2.0);frame3.setTranslateY(size / 2.0);final double scaleRatio = size / initialSize;line1.setScaleX(scaleRatio);line1.setScaleY(scaleRatio);final double lineWidth = line1.getBoundsInLocal().getWidth();line1.setTranslateX(size / 2.0 - lineWidth / 2.0);line1.setTranslateY(size * 408.72054 / initialSize);line.setScaleX(scaleRatio);line.setScaleY(scaleRatio);line.setTranslateX(size / 2.0 - lineWidth / 2.0);line.setTranslateY(size * 410.08419 / initialSize);lightEffect.setRotate(lightEffectRotate);lightEffect.setTranslateX(lightEffectXRatio * size);lightEffect.setTranslateY(lightEffectYRatio * size);lightEffect.setRadiusX(lightEffectXRadiusRatio * size);lightEffect.setRadiusY(lightEffectYRadiusRatio * size);}

下一步將是混合兩種方法,為用戶提供兩種工作方法。 一個人將能夠使用css方法來自定義Nest表示形式,其他人將能夠使用良好的代碼API方法。 這將使我看到對代碼有什么影響(是否沉重或不同時使用這兩種方法),以及在進一步簡化代碼之前是否在css和代碼API之間做出選擇。

參考: JavaFX自定義控件–我們JCG合作伙伴 Laurent Nicolas的Nest Thermostat第3部分 ,在LoNee先生的博客上。

翻譯自: https://www.javacodegeeks.com/2014/02/javafx-custom-control-nest-thermostat-part-3.html

javafx 自定義控件

總結

以上是生活随笔為你收集整理的javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第3部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。