java程序能转变为javafx_如何在java中直接调用javaFX

lovewhzlq 所引用的文章为本人原创(http://javafxguy.iteye.com/blog/317087), 51cto非法转载。

要解决你这个问题,可以参考本人最新博文:

用纯Java代码调用JavaFX的功能

或者

JavaFX技巧:纯Java代码调用JavaFX的例子

摘要如下,希望对你有帮助:

假定我们需要从Java中调用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();

}

下一步是创建JavaFX类MyChart来实现这个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 labelString = 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中调用图表功能:

/*

* JavaTest.java

* @author Henry Zhang http://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();

}

}

如果你用的是NetBeans IDE, 你可以在项目属性中把javatest.JavaTest类设为主类(Main class)(即启动类)。编译之后会生成一个javatest.jar文件。程序运行的结果如图(略)

在命令行中可以采用以下方式: http://developers.sun.com/blog/henry

javafx -jar javatest.jar

2009年6月21日 18:29

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值