javafx使用,java用不了javafx
常见问题
JavaFX是什么?
“JavaFX
脚本是一种声明性的、静态类型的编程语言。它有一个一阶函数(一级
函数)、声明性语法、列表理解和基于依赖关系的增量评估
基于依赖性
评价)等功能。JavaFX script为各种操作提供了声明性语法,而无需中间程序逻辑,例如创建2D动画、设置属性或在
以及模式对象和模式对象之间的绑定依赖关系。
什么样的函数可以称之为「一级函数」?
在
在编程语言中,我们经常把那些把函数当作一级对象的函数称为一级函数(一级
功能).具体来说,编程语言支持在程序执行过程中构造新的函数,并作为其他函数的传入参数存储在数据结构中,在函数中返回。
当它们作为函数值返回时。这个概念不包括任何语言或程序的外部函数或程序,例如通过调用编译器或eval函数来创建新函数。
下面是一个一级函数的简单例子:map或mapcar函数,它以一个函数和一个列表作为参数,然后以将函数应用于列表的每个成员所形成的列表作为返回值。
“声明式语法”是什么意思?
与大多数依赖程序和显式代码来更新变量或属性之间的关系的编程语言不同,声明性语言允许以另一种方式声明值。
JavaFX中的一个例子:var a:number=bind model.attrib/2;
每当model.attrib的值发生变化时,a的值就会自动透明地更新,更新过程中不需要调用任何程序。这对于绑定模式和视图对象之间的依赖关系以及控制GUI行为特别有用。
“列表理解”是什么意思?
我们经常把“列表理解”翻译成“列表推导”。派生是一种支持在语言级别以各种方式创建和维护列表的方法。
JavaFX中的一些例子:var nums=[1,2,3,4];
var nums2=[1.4];//同上
var numsGreaterThanTwo=nums[。
var numsLessThanFour=在nums中从n中选择n,其中n
什么是“基于增量依赖的评估”?
“增量
基于依赖性
评估”翻译为“基于依赖的增量评估”。在JavaFX中,属性值可以声明为依赖于(绑定到)包含其他属性的表达式。这样,当有人在
当被引用属性的值发生变化时,所有依赖于该属性的属性都会直接或间接改变其值,这个过程不需要调用任何中间程序逻辑。这与Excel等电子表格中的情况相同。
使用的等式非常相似。
这对于需要动态维护模式和视图属性的GUI开发非常有用,但通常需要复杂的程序逻辑。
“操作”与“功能”
函数运算和函数运算的区别在于,函数可以增量式重复求值,可以绑定返回值、绑定参数、绑定变量/属性、隐式绑定局部变量。
有关进一步的解释,请参见下面的JavaFX代码片段:Class Foo(
属性zap
功能栏(x) { x zap }
}
var afoo=Foo { zap: 14 }
var zing=1;
var snap=afoo . bar(zing);
bind dyn=afoo . bar(zing);
我们看得很清楚,无论zing和zap怎么变,snap都不会变。Dyn会随着zing和zap的变化而变化。因为当zing和zap的值改变时,会发生一个增量求值过程:程序将改变后的值传递给所有依赖它们的函数,并重新计算这些值。
JavaFX的授权模式是什么?
应用
一些开发者赞成让用户发布自己的应用,并坚信开源和社区的力量。但是,当前的JavaFX版本是在评估授权下发布的,因此不能重新发布。你当然可以发表。
我自己写了一个基于JavaFX的应用,但是不能和JavaFX捆绑,需要告诉用户我需要从openjfx项目网站下载JavaFX二进制代码。
图书馆。此外,由于JavaFX早期代码仍处于评估授权状态,因此不能用于商业目的。当Sun开发完JavaFX的商业版本后,我相信它会得到
去改变。
Sun是否为商业JavaFX产品的发布设定了时间表?
很抱歉,目前还没有确切的时间安排,但很快就会制定出来。
JavaFX Runtime和JavaFX Script一样开源吗?
是的,JavaFX Runtime即将开放其源代码。
JavaFX和……
与F3相比:F3是Form Follows Function的缩写,是JavaFX平台的前身名称。
与Java相比:JavaFX是一种兼容JSR-223的脚本语言。它可以使用Java类,并从它们被调用。
与Java 6.0提供的脚本引擎相比
6.0提供的脚本引擎为兼容JSR-223的脚本语言提供了运行平台,JavaFX可以在Java中使用
在6.0提供的脚本引擎上运行。而JavaFX不依赖于Java。
6.0,可以在任何兼容JSR-223的脚本引擎(如javax.script.ScriptEngine)下执行。
与SVG相比:SVG
不是一种编程语言;它是一种数据描述语言。它的XML语法对于编程语言来说很糟糕。但是SVG的交互性和兼容性是令人满意的。目前,JavaFX开发组
该团队不打算直接使用SVG。由于SVG和JavaFX都是从旧的PostScript和Java2D矢量图形模式派生出来的,在某种程度上,我们已经在
JavaFX中使用SVG,但是仍然有一些明显的不兼容性。
Chris Oliver编写了SVG到F3的转换程序。
与swing相比:javaFX是一种新的编写Swing应用的方式,不需要了解Swing框架和Java语言。
与Javascript相比:JavaFX和Javascript唯一的相似之处是它们都是JSR-223兼容的脚本语言。
与Ajax相比:Ajax是一种使用Javascript和异步更新的web浏览器端技术。它与JavaFX的关系:两者都是UI相关的技术。但是语言和环境完全不同。
与Savaje OS的关系:Sun正计划使用他们的Saveje手机系统和JVM发布JavaFX Mobile,它可以在移动设备上运行JavaFX脚本,它将成为Windows Mobile和Flash Lite的有力竞争对手。
可以用JavaFX写Java3D应用吗?是否兼容VRML或X3D标准、Xj3D等代码库?
不能平白无故用。JavaFX可以与任何第三方代码库互操作,无需任何特殊语法。目前JavaFX开发团队正在开发支持Java3D的功能。
JavaFX是RCP(富客户端平台)吗?
是的,JavaFX不仅可以用于RCP开发,还可以用于RIA(富互联网应用程序)开发。
我可以在web应用程序中使用JavaFX吗?
JavaFX可以用来写前端应用,web应用的视图,或者用户界面,但是都需要JVM的支持。
JavaFX会取代Java EE中的JSF和JSP吗?
不,JSF
和JSP用于编写纯web应用程序(可供支持HTML的HTTP客户端使用),而JavaFX要求客户端上有一个JVM。如果您想编写富客户端
然后需要在客户端安装JRE,JavaFX可以提供与基于Flash的Flex和基于的Silverlight相同的功能。网。的常见应用场景
它是一个在公司内部网中开发和运行的应用程序。
JavaFX在运行时需要服务器吗?
JavaFX是一种专注于GUI的脚本语言;它主要用于桌面应用程序,因此不需要服务器。如果您计划部署JNLP(Java web Start),那么您需要一个web服务器。
运行JavaFX需要什么?
选择两个条件之一:
Java5以上5,兼容JSR-223的实现,JavaFX代码库;
Java6以上,JavaFX代码库。
目前有JavaFX的编译器吗?
OpenFX编译器是一个JavaFX编译器项目,其源代码已经开放。
详情请访问https://openjfx-compiler.dev.java.net/.
发展中遇到的问题
JavaFX中固有的数据类型有哪些?
JavaFX中的固有数据类型:字符串、布尔、数字、整数。
JavaFX和Java类型之间的对应关系:
更多信息请访问:
https://open jfx . dev . Java . net/Java FX _ Programming _ language . html # basic _ types
如何连接两个字符串?" "操作符已经不起作用了!
与爪哇有所不同,JavaFX并没有重载" "操作符来使其用于字符串连接:导入Java FX。ui。*;
导入Java FX。ui。画布。*;
框架{
内容:标签{
文本:"你好""世界"
}
可见:真
}
如果尝试运行上面的代码,我们将看到以下的控制台输出:编译线程:线程[AWT-EventQueue-0,6,main]
编译2.031
文件:/C:/workspace/F3/Hello world。外汇:6:不兼容的类型:应为数字,但在“你好”中找到了字符串
文件:/C:/workspace/F3/hello World。外汇:6:不兼容的类型:应为数字,但在“世界”中找到了字符串
文件:/C:/workspace/F3/Hello World。外汇:6:不兼容的类型:应为字符串,在文本中找到数字:“你好”“世界”
实现方式之一:修改代码
爪哇实现方法:字符串s=您的分数是总分中的n。
应用的字符串表达式操作符{}实现连接字符串的功能:var s:String=您的分数为{n}分,共{总计}分。
实现方式之二:调用concat()方法
应用提供了concat()方法来连接两个字符串:导入Java FX。ui。*;
导入Java FX。ui。画布。*;
框架{
内容:标签{
文本:"你好"。concat("世界")
}
可见:真
}
如何将字符串转换为数字?
目前没有直接的方式,但可以使用下面的代码:var value=new DecimalFormat(0 ).parse(someString);
如何将文本字段的数值绑定到一个数字类型属性?
使用绑定*总风险值=10
文本字段{
值:绑定总计
.
}
也可以使用格式进行格式化:值:绑定" {总格式为# # # # 0 }"
如何设置用在Java Web Start上的JavaFX?
JNLP(爪哇网络启动协议)是一种基于可扩展置标语言的协议,它能够在网络上部署爪哇和应用应用。
这里提供一个用于部署JavaFXPad的网络加载协议示例。
详细示例请见:http://下载。Java。net/general/open jfx/demos/Java fxpad。jnlp)。可扩展标记语言版本=1.0 编码=utf-8 ?
网络加载协议
规格=1.5
code base= http://下载。Java。 net/general/open jfx/demos
href=javafxpad.jnlp
信息
标题应用演示:JavaFX填充/标题
供应商太阳微系统公司/供应商
离线-允许/
/信息
安全
所有权限/
/安全性
资源
j2se版本= 1.5 href= http://Java。星期日 com/products/autodl/J2SE
java-vm-args=-Xss1M -Xmx256M
/j2se
jar href= Java fxrt。jar main= true /
jar href=Filters.jar/
jar href=swing-layout.jar/
jar href=javafxpad.jar/
/资源
申请desc主-
参数javafxpad .主要/论点
/应用程序desc
/jnlp
" Hello Web Start FX "示例
环境需求
Java 5 JDK
• 从openjfx项目下载后获得的应用代码包中提取出来的/lib/javafxrt.jar和lib/swing-layout.jar
"你好,Web Start JFX”程序代码
文件名:HelloWebStart.fx导入Java FX。ui。*;
框架{
标题:"你好,网络起点JFX!”
宽度:600
身高:400
内容:标签{
短信:"你好,网络起点JFX!”
font: Font{size: 32}
}
可见:真
}
创建你好webstart jfx。jar jar CVF你好网络启动jfx。jar hello webstart。效果
创建HelloWebStartJFX.jnlp
文件名:HelloWebStartJFX.jnlp?可扩展标记语言版本=1.0 编码=utf-8 ?
网络加载协议规范=1.5
code base= http://www。举例。 com/HelloWebStartJFX/
href=HelloWebStartJFX.jnlp
信息
title Hello Web Start JFX /title
卖主约翰多伊/卖主
主页href= http://www。举例。com/HelloWebStartJFX//
应用脚本的描述网启动示例/描述
离线-允许/
/信息
安全
所有权限/
/安全性
资源
j2se版本= 1.5 href= http://Java。星期日 com/products/autodl/J2SE
/j2se
jar href= Java fxrt。jar main= true /
jar href=swing-layout.jar/
jar href= hellowebstartjfx。jar /
/资源
申请desc主-
参数HelloWebStart /argument
/应用程序desc
/jnlp
创建签名密钥keytool-genkey-alias jfx-dname CN=John Doe,O=JFX公司-有效性9999-密钥库jfx。密钥库-密钥传递密钥密码-商店通行证存储密码
签名jar文件jarsigner-keystore jfx . keystore-verbose-key pass密钥密码-store pass store pass word hellowebstartjfx . jarjfx
jarsigner-keystore jfx . keystore-verbose-keypass keyPassword-store pass store password Java fxrt . jar jfx
jarsigner-keystore jfx . keystore-verbose-key pass密钥密码-storepass存储密码swing-layout.jar jfx
连接到HelloWebStartJFX.jnlp
文件名:index.html!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN
http://www . w3 . org/TR/XHTML 1/DTD/XHTML 1-strict . DTD
html xmlns= http://www . w3 . org/1999/XHTML
头
meta http-equiv= Content-Type COntent= text/html;charset=utf-8 /
标题你好网上开始JFX!/标题
/头
身体
h1你好网上开始JFX!/h1
Java Web Start: Hello Web Start JFX!/a /p
/body
/html
服务器:为设置MIME类型。网络加载协议
Apache server:在http.conf或中添加类型:application/x-Java-jnlp-file jnlp。htaccess文件
将文件复制到Web服务器mkdir/www . example . com/docs/hellowebstartjfx/
CP index.html HelloWebStartJFX . jnlp HelloWebStartJFX . jar Java fxrt . jar swing-layout . jar/www/www . example . com/docs/HelloWebStartJFX/
启动Web Start
通过www.example.com/HelloWebStartJFX/.启动web Start
如何用“全限定名”引用Java类?
完全限定的Java类名必须用法语引号来修饰。
我如何访问内部类和接口?
当访问内部类和接口时,只能使用内部类的编译名称。
例如:
java中的Import java.util.Map.Entry在JavaFX中将表示为import Java . util . mapEntry。
还应该注意,在JavaFX中,当引用内部类时,需要继续使用Outer$Inner的语法。为了方便起见,还可以将import语句修改为:import java.util.map $ entry作为entry。
这样就不用重复使用Outer$Inner形式了。
可以用Java 5枚举吗?
当然可以。可以通过以下方式参考:导入Java . util . management . memory type;//导入枚举
var value=HEAP:memory type;//使用枚举值
//HEAP是MemoryType中的枚举值。
var all values=memory type . values();//创建包含所有枚举值的JavaFX数组
如何在JavaFX中轻松定制Swing组件?
下面是一些快速打包Swing组件的代码,可以用在JavaFX组件层:
SwingWidget类定义:
文件名:swing widget . FX package a . b . c;
导入Java FX . ui . *;
导入javax . swing . jcomponent;
类SwingWidget扩展Widget {
属性swing component:JComponent;
}
operation swing widget . create component():javax . swing . jcomponent {
返回swingComponent
}
用法:
下面提供了一个使用SwingWidget的简单示例。请注意,树列表中提供的数据来自默认的树模型,而不是JavaFX独有的。
文件名:widget test . FX package a . b . c;
导入Java FX . ui . *;
导入Java FX . ui . canvas . *;
导入Java . lang . system;
导入javax . swing . jtree;
导入a . b . c . swing widget;
框架{
onClose: operation() {
system . exit(0);
}
内容:SwingWidget {
swingComponent:新的JTree()
}
可见:真
标题:“WTF,小部件测试框架”
}
运行界面:
为什么我的一些?Javafx Pad可以重新加载FX文件吗?
很遗憾的告诉你,JavaFXPad目前功能非常有限。他检测不到外部文件的变化。为了让它“看到”您的修改,您需要在JavaFXPad中手动重新打开修改过的文件。
如何引用其他JavaFX文件?
JavaFX可以引用以下三种资源中的静态值、变量和类:
1.在同一份文件中
2.相同目录/包路径中的文件
3.其他包路径中的文件
首先,第一种方式很简单。如果您在同一个文件中引用一个类,那么您只需要使用类名(该类可以在引用之前或之后定义)。变量在声明之前不能被引用。
对于第二种方法,显然,您不需要对每个都使用import语句。fx文件放在同一个包路径中,但是只需为import语句提供它们所在的同一个包路径。
诸如
如果您有其他内部类或者您需要从不同的包路径导入类,您需要使用import语句来完成一点额外的工作:导入。fx文件而不是
该文件中的特定类。例如,如果MediaTable.fx包含两个类:MediaTableColumn和MediaTableRow,那么您只需
您可以用importing MediaTable语句导入这两个类。
也可以像Java一样使用import *语句。但是因为这种方法降低了代码的可读性,所以不推荐给大家。
JavaFX脚本是否提供__LINE__这样的神奇常数?
魔法常数
_ _ dir _ _-返回包含当前FX源文件的目录的URL。如果当前文件是从jar文件加载的,返回值可能是jar文件的URL。
_ _ file _ _-返回当前源文件的URL。
_ _ line _ _-返回当前源文件中的当前行。
_ _ archive _ _-返回包含当前文件的jar文件的URL。
示例导入Java FX . ui . *;
框架{
标题:“魔法常数”
宽度:700
身高:400
内容:标签{text: html dl
dt _ _ DOCBASE _ _/dt DD { _ _ DOCBASE _ _ }/DD
dt __DIR__ /dt dd {__DIR__} /dd
dt __FILE__ /dt dd {__FILE__} /dd
dt __LINE__ /dt dd {__LINE__} /dd
dt _ _ ARCHIVE _ _/dt DD { _ _ ARCHIVE _ _ }/DD
/dl /html }
可见:真
}//帧
更多信息
克里斯托弗奥利弗写的魔法常数
JavaFX中有哪些保留字?
在.之后
和
如同
维护
属性
以前
约束
破裂
经过
捕捉
班级
继续
删除
明显的
做
唉
easeboth
幂加速动作
放松
其他
结束条件
延伸
错误的
最后
第一
为
为每一个
格式
每秒帧数
从
功能
如果
进口
在
指数
索引of
插入
实例of
到…里面
相反的
最后的
后来
懒惰的
线性的
运动
nodebug
新的
不
空
在
操作
或者
命令
包裹
私人的
保护
公众的
只读的
返回
反面的
挑选
尺寸
极好的
然后
这
抛出(请注意,它不是抛出)
引发
真实的
尝试
类型of
单位区间
的价值
定义变量
在哪里
正在…
异或运算
来自:3358 www . matrix . org . cn/resource/article/2007-09-24/e 50 BF 5 af-6a 56-11DC-91 F8-0 da 64 dffe 568 . html