相关文章:
[在JavaFX使用多维数组
] [自己编程写的JavaFX 演示游戏
] [JavaFX和Java之间的互操作性
] [JavaFX的Effect功能例子:编写许愿树程序(2)
] [JavaFX的Effect功能例子:编写许愿树程序(3)
]
本文着重介绍了用JavaFX的effect功能来实现用户图形界面(GUI)。
看了同事用NetBeans来开发PHP的许愿树程序(C/S架构的),其中client端的图形界面是由flash来实现。那么如果这个界面用JavaFX来写会怎样呢?我想这一定是很有趣的事情,于是就决定动手写个程序,比较一下。
我们首先写个主程序,把画面的Scene做出来。在这个画面中,蓝天背景和白云都需要使用图形效果(effect),在JavaFX中支持了多种图形效果,Lighting,Blur,Shadow等等,可以大大丰富我们的用户界面。我们的程序采用线性渐变(LinearGradient)效果来画蓝天,用高斯模糊(GaussianBlur)效果来画白云,程序如下:
/*
* Main.fx
*
* http://www.javafxblogs.com
*
*/
package wishtree;
import javafx.scene.effect.GaussianBlur;
import javafx.scene.effect.PerspectiveTransform;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
* @author Henry Zhang
* JavaFX编程 http://javafxguy.iteye.com
* JavaFX技术交流应用 http://www.javafxblogs.com
*/
var xx = 170;
var yy = 430;
var tree : ImageView = ImageView {
x: 80
y: 0
image: Image {
url: "{__DIR__}images/tree.png"
width: 640
preserveRatio: true
}
};
var tree2 =
Image {
url: "{__DIR__}images/tree2.png"
width: 130
preserveRatio: true
};
var stage =
Stage {
title: "Wish Tree"
width: 830
height: 620
resizable: false
scene: Scene {
fill: LinearGradient {
startX: 0,
startY: 0.0,
endX: 0,
endY: 1.0
proportional: true
stops: [ Stop { offset: 0.0 color: Color.web("#14acf8") },
Stop { offset: 1.0 color: Color.web("#a4e6f8") }]
}
content: [
ImageView {
x: 50
y: 280
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 160
}
effect: GaussianBlur { radius: 25 }
},
ImageView {
x: 520
y: 300
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 150
}
effect: GaussianBlur { radius: 33 }
}, ( JavaFX Demo Game http://www.javafxgame.com )
ImageView {
x: 560
y: 500
image: tree2
},
ImageView {
x: 460
y: 470
image: tree2
},
ImageView {
x: 60
y: 500
image: tree2
},
ImageView {
x: 190
y: 470
image: tree2
},
tree,
ImageView {
x: 120
y: 360
image: Image {
url: "{__DIR__}images/sign.png"
width: 180
preserveRatio: true
}
},
ImageView {
x: 20
y: 60
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 250
}
effect: GaussianBlur { radius: 40 }
},
ImageView {
x: 520
y: 90
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 100
}
effect: GaussianBlur { radius: 20}
},
ImageView {
x: 620
y: 190
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 180
}
effect: GaussianBlur { radius: 25}
},
ImageView {
x: 600
y: 380
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 150
}
effect: GaussianBlur { radius: 33 }
},
ImageView {
x: 0
y: 490
image: Image {
url: "{__DIR__}images/cloud.png"
}
effect: GaussianBlur { radius: 30 }
},
Text {
x:170
y: 450
content: "许愿树"
fill: Color.YELLOW
font: Font.font ( null, FontWeight.BOLD, 30);
effect: PerspectiveTransform {
ulx: xx uly: yy
urx: xx+80 ury: yy-10
llx: xx-2 lly: yy+40
lrx: xx+80 lry: yy+38
}
}
]
}
}
在程序中,我们把Stage的scene属性用渐变效果填充,可以得到蓝天的效果。在这个渐变效果中,startX和endX的值一样,startY和endY的值不同,因此是沿着Y方向(竖直)的渐变方式。起始颜色为深蓝("#14acf8"),结束颜色为浅蓝("#a4e6f8"),在整个Stage的Y方向均匀变化,相关代码如下:(作者:Henry Zhang 发表于:http://javafxguy.iteye.com)
fill: LinearGradient {
startX: 0
startY: 0
endX: 0
endY: 1.0
proportional: true
stops: [ Stop { offset: 0.0 color: Color.web("#14acf8") },
Stop { offset: 1.0 color: Color.web("#a4e6f8") }]
}
白云的模糊效果是通过高斯算法来获取,例如在下面代码中,ImageView的effect属性是: GaussianBlur{ radius: 40 },radius表示模糊渐变发范围的大小,数值越大,模糊度越大。
ImageView {
x: 20
y: 60
image: Image {
url: "{__DIR__}images/cloud2.png"
preserveRatio: true
width: 250
}
effect: GaussianBlur { radius: 40 }
}
由于我们需要显示几朵不同大小的白云,我们需要把白云Image(cloud2.png)作大小调整,上面码中,我们通过改变width的值,并设置preserveRatio=true来保证长宽比例不变,这样就“创造”出不同大小的云块。相关代码段如下:
(本文参见:JavaFX许愿树
http://www.javafxblogs.com/javafx-effect-wish/)
preserveRatio: true
width: 250
还有要说明的一点是,在木牌子上的“许愿树”3个字,我们采用了维度变换( PerspectiveTransform )的效果,可以把2维的文字变成具有3维感觉的字形,呈梯形状。在PerspectiveTransform需要定义梯形的4个角的坐标,从而把原来长方形的区域映射成变形的字体。相关代码如下: (作者:Henry Zhang 发表于:http://javafxguy.iteye.com)
Text {
x:170
y: 450
content: "许愿树"
fill: Color.YELLOW
font: Font.font ( null, FontWeight.BOLD, 30);
effect: PerspectiveTransform {
ulx: xx uly: yy
urx: xx+80 ury: yy-10
llx: xx-2 lly: yy+40
lrx: xx+80 lry: yy+38
}
}
好了,许愿树程序的界面就完成了,在下一篇文章中会继续介绍如何在树上“挂上”愿望星星。如果你有JDK 1.5以上的环境(JDK1.6 U10以上更佳),快点击下图来看看这个JavaFX版本的“愿望树”吧。当你的浏览器首次运行JavaFX程序时,会有一些等待下载的时间。
本文同步发表于:JavaFX编程应用:许愿树
( 未完待续, 下一篇: 用JavaFX的Effect功能编写许愿树程序(2)
)
Hobby Master 飞机 坦克 军事 模型
JavaFX例子和实例
JavaFX培训教程
分享到:
- 2009-05-12 17:40
- 浏览 5067
- 评论(0)
- 论坛回复 / 浏览 (0 / 2398)
- 查看更多
相关推荐
JavaFX是Oracle公司推出的一种用于构建富互联网应用程序(RIA)的平台,它为开发者提供了丰富的图形用户界面(GUI)工具和组件,使得开发者可以创建出具有高质量、高性能、跨平台的应用程序。本教程将深入探讨JavaFX...
javafx2.0,java,javafx,例子,代码 Sun公司(已于20092008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语 言开发富互联网应用程序(RIA)。JavaFX Script编程语言(以下称为JavaFX)是Sun微...
JavaFX 使用指南 JavaFX 是一个基于 Java 语言的软件平台,...JavaFX 是一个功能强大且灵活的平台,适用于开发桌面应用程序、移动应用程序和网络应用程序。但是,JavaFX 的学习曲线陡峭,需要一定的编程经验和知识。
在JavaFX中,开发者可以利用其3D功能来构建具有复杂视觉效果的应用,如本例中的“javaFX 3D小例子”,它是一个使用JavaFX 3D API实现的水分子模拟结构的Idea工程。 首先,我们要理解JavaFX 3D API的核心概念。...
1. **JavaFX Base**: 这是JavaFX的核心模块,提供了一些基础功能,如事件处理、国际化、错误处理等。`javafx.base.jar`就是这个模块的实现,它是其他所有模块的基础。 2. **JavaFX Controls**: 这个模块包含了各种...
1. **MandelbrotSet**:这是一个著名的复数迭代计算的例子,用于展示JavaFX的图形渲染能力。Mandelbrot集合是一个在复平面上的点集,通过迭代函数来确定每个点是否属于该集合。在JavaFX中,你可以看到如何利用Canvas...
JavaFX 官方教程:RIA 应用开发
JavaFX和MySQL是两个在软件开发中常用的工具,它们结合可以构建功能强大的应用程序,特别是用于创建用户界面和管理数据库的数据驱动应用。在这个“学生信息管理系统”中,JavaFX作为前端框架,提供了丰富的图形用户...
JavaFX 2.0 是一个强大的富互联网应用程序(RIA)平台,用于构建具有美观图形界面的应用程序。在JavaFX 2.0中,FXML(FXML Language)被引入,这是一种基于XML的声明性语言,专门用于定义应用程序的用户界面。这个...
然后,创建一个新的 JavaFX 项目,并编写一个简单的 JavaFX 应用程序。最后,使用 NetBeans IDE 运行应用程序。 Application Execution Modes ----------------------------- JavaFX 应用程序有三种执行模式:...
javafx的单机版许愿树,从网上看到的实例,学习了一下加了几行代码,备份
通过以上八个课程的学习,开发者不仅可以掌握JavaFX的基本使用方法,还能深入理解如何构建高质量、功能丰富的GUI应用程序。无论是对于初学者还是有一定经验的开发人员来说,这些课程都是宝贵的学习资源。
通过这个“javafx之fxml例子_用户登录”的实践,开发者可以深入理解JavaFX和FXML在创建GUI应用中的强大功能。同时,它也展示了如何利用IDE(如NetBeans)简化开发流程,提高开发效率。学习并掌握这些知识,将有助于...
JavaFX是一个用于构建桌面、移动和嵌入式设备上的富客户端应用程序的开源框架。它提供了丰富的用户界面组件和强大的2D/3D图形功能,使得开发者可以创建出具有吸引力的图形用户界面。在这个名为"javaFX完整项目案例...
7. **src**:源代码目录,通常包含.java文件,是编写JavaFX程序的主要部分。通过查看源码,可以深入理解各个示例的实现细节,包括控件的使用、事件处理、布局管理等。 这些JavaFX示例程序为初学者提供了很好的学习...
JavaFX是一个用于创建桌面、Web以及移动设备上富客户端应用程序的强大的图形库。通过这个项目,我们可以深入理解JavaFX的基本概念,以及如何将这些概念应用于实际的游戏开发。 首先,让我们了解JavaFX 2.0的主要...
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用程序的技术,它基于Java语言。这个电子书以HTML格式提供,是官方发布的正式文档,对于已经有一定JavaFX基础的开发者来说,是一份非常宝贵的参考资料。 ...
JavaFX是Java平台上的一个应用程序接口(API),用于构建丰富的用户界面。在早期版本的Java Development Kit (JDK) 中,JavaFX是一个内置组件,包括了`jfxrt.jar`这个重要的库文件,它包含了运行JavaFX应用所需的...
JavaFX 2.0是Java平台下一代图形用户界面(GUI)工具包,为开发者提供了一个强大的框架来快速构建功能丰富、视觉效果出色的跨平台应用程序。与之前的版本相比,JavaFX 2.0进行了重大改进,包括硬件加速图形渲染、更...