日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何用純Java代碼調(diào)用JavaFX的功能

本篇內(nèi)容介紹了“如何用純Java代碼調(diào)用JavaFX的功能”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)專注于大邑縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供大邑縣營銷型網(wǎng)站建設(shè),大邑縣網(wǎng)站制作、大邑縣網(wǎng)頁設(shè)計、大邑縣網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造大邑縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供大邑縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

從Java調(diào)用JavaFX的三種方法分別為:

1. 用ScriptEngineManager類。這是基于JSR-223規(guī)范的java腳本API( scripting API)。可以在java程序中運行一些腳本,如 JavaFX script, javascript等。

2. 通過JavaFX reflection API。這是JavaFX提供的反射API,幾乎可以調(diào)用所有的JavaFX類。

3. 先用JavaFX類實現(xiàn)一個Java的interface,然后Java程序可以通過這個interface來調(diào)用JavaFX的功能。這中間的interface起了個橋梁的作用。 

第三種方法應(yīng)該是比較“正規(guī)”而且“優(yōu)美”的調(diào)用方式。但是也有一點不足:程序代碼的入口必須從JavaFX啟動。這是因為JavaFX程序比較容易生成JavaFX類的實例,從而可以供Java方使用。可是我們有時會碰到一些特定的情況,需要從Java端啟動代碼。例如,如果你已經(jīng)有了一個較完整的Java程序,你需要用調(diào)用JavaFX的某些功能,這時候較好的方法是把Java作為程序的入口。為了解決這個問題,我把第2和第3種方法作了融合,大家可以看看下面的例子。

假定我們需要從Java中調(diào)用JavaFX的圖表(charting)功能。我們首先用JavaFX reflection API生成JavaFX類的實例。然后我們再通過java的interface來使用它。因此,我們先定義一個Java的interface:

/*     * JavaInterface.java     *     * @author Henry Zhang  http://www.javafxblogs.com     */    package javatest;     public interface JavaInterface {       public void addData(String name, float data);       public void showChart();     }     /*   * JavaInterface.java   *   * @author Henry Zhang  http://www.javafxblogs.com   */  package javatest;  public interface JavaInterface {    public void addData(String name, float data);    public void showChart();  }

下一步是創(chuàng)建JavaFX類MyChart來實現(xiàn)這個interface:

/*     * MyChart.fx     *     * @author Henry Zhang http://www.javafxblogs.com     */    package javatest;         import javafx.scene.chart.PieChart;     import javafx.scene.Scene;     import javafx.scene.text.Font;     import javafx.scene.text.Text;     import javafx.stage.Stage;     import javafx.scene.chart.PieChart3D;         public class MyChart extends JavaInterface {       var chartData :  PieChart.Data[] = [];           public override function addData( l:String, v: Number):Void {     var llabelString = l;         var data =  PieChart.Data {       label : l       value : v       action: function() {     println("{labelString} clicked!");       }      } ;         insert data into chartData;       }           public override function showChart() : Void {     var chart =       PieChart3D {     data : chartData     pieThickness: 25    pieLabelFont: Font{ size: 9 };     pieToLabelLineOneLength: 10    pieToLabelLineTwoLength : 20    pieLabelVisible: true    pieValueVisible: true    translateY: -50     };         Stage {       title: "PieChart Window"      width: 520      height: 300      scene: Scene {     content: [       Text {     font : Font {     size : 16       }     x: 200    y: 20    content: "Pie Chart"      },       chart     ]       }     }       }     }     /*   * MyChart.fx   *   * @author Henry Zhang http://www.javafxblogs.com   */  package javatest;   import javafx.scene.chart.PieChart;  import javafx.scene.Scene;  import javafx.scene.text.Font;  import javafx.scene.text.Text;  import javafx.stage.Stage;  import javafx.scene.chart.PieChart3D;   public class MyChart extends JavaInterface {    var chartData :  PieChart.Data[] = [];     public override function addData( l:String, v: Number):Void {  var llabelString = l;   var data =  PieChart.Data {    label : l    value : v    action: function() {  println("{labelString} clicked!");    }   } ;   insert data into chartData;    }     public override function showChart() : Void {  var chart =    PieChart3D {  data : chartData  pieThickness: 25  pieLabelFont: Font{ size: 9 };  pieToLabelLineOneLength: 10  pieToLabelLineTwoLength : 20  pieLabelVisible: true  pieValueVisible: true  translateY: -50   };   Stage {    title: "PieChart Window"    width: 520    height: 300    scene: Scene {  content: [    Text {  font : Font {  size : 16     }  x: 200  y: 20  content: "Pie Chart"    },    chart  ]    }  }    }  }

***就是從java類JavaTest中調(diào)用圖表功能:

/*     * JavaTest.java     * @author Henry Zhanghttp://www.javafxblogs.com     */    package javatest;         import javafx.reflect.FXClassType;     import javafx.reflect.FXLocal;     import javafx.reflect.FXLocal.Context;     import javafx.reflect.FXLocal.ObjectValue;         public class JavaTest {       public static void main(String args[]) {     Context context = FXLocal.getContext();     FXClassType instance = context.findClass("javatest.MyChart");     ObjectValue obj = (ObjectValue)instance.newInstance();         JavaInterface ji = (JavaInterface)obj.asObject();         String [] labels = {"January", "Febuary", "March", "April"};     int [] values = { 18, 20, 25, 37 };         for ( int i=0; i < values.length; i++ ) {       ji.addData(labels[i], values[i]);     }         ji.showChart();       }     }     /*   * JavaTest.java   * @author Henry Zhanghttp://www.javafxblogs.com   */  package javatest;   import javafx.reflect.FXClassType;  import javafx.reflect.FXLocal;  import javafx.reflect.FXLocal.Context;  import javafx.reflect.FXLocal.ObjectValue;   public class JavaTest {    public static void main(String args[]) {  Context context = FXLocal.getContext();  FXClassType instance = context.findClass("javatest.MyChart");  ObjectValue obj = (ObjectValue)instance.newInstance();   JavaInterface ji = (JavaInterface)obj.asObject();   String [] labels = {"January", "Febuary", "March", "April"};  int [] values = { 18, 20, 25, 37 };   for ( int i=0; i < values.length; i++ ) {    ji.addData(labels[i], values[i]);  }   ji.showChart();    }  }

在代碼中,這3句是創(chuàng)建JavaFX類javatest.MyChart實例,

Context context = FXLocal.getContext();     FXClassType instance = context.findClass("javatest.MyChart");     ObjectValue obj = (ObjectValue)instance.newInstance();     Context context = FXLocal.getContext();  FXClassType instance = context.findClass("javatest.MyChart");  ObjectValue obj = (ObjectValue)instance.newInstance();

而一下這句則是把JavaFX實例轉(zhuǎn)化為Java可用的對象:

JavaInterface ji = (JavaInterface)obj.asObject();

如果你用的是NetBeans IDE, 你可以在項目屬性中把javatest.JavaTest類設(shè)為主類(Main class)(即啟動類)。編譯之后會生成一個javatest.jar文件。程序運行的結(jié)果如圖:

如何用純Java代碼調(diào)用JavaFX的功能

在命令行中可以采用以下方式:

javafx -jar javatest.jar

實際上,可以用純Java的方式來啟動程序,只要把JavaFX的運行環(huán)境帶上即可,如:

java -Djava.library.path=""  -classpath "" -jar javatest.jar

因為JavaFX需要的jar文件很多,因此這種“最純”的Java方法使用起來比較麻煩。我覺得還是用JavaFX命令簡潔些, 而且JavaFX就是上述java命令的封裝而已。

“如何用純Java代碼調(diào)用JavaFX的功能”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


標(biāo)題名稱:如何用純Java代碼調(diào)用JavaFX的功能
文章源于:http://www.dlmjj.cn/article/gsjgcs.html