`
esffor
  • 浏览: 1370667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaFX发现之旅 JavaFX Script With Eclipse 入门(第三部分)

阅读更多

标签(Labels)

JavaFX Label类支持HTML内容。使用Label您可以使用HTML和CSS创建样式文本和图像,非常类似于典型的Web应用。此外,通过使用JavaFX嵌入表达式,您可以在Swing应用中象Web页面作者使用类似JSTLVelocity工具一样创建动态的HTML内容。

考虑以下虚拟购物车示例:

import javafx.ui.*;   class Item {             attribute id: String;             attribute productId: String;             attribute description: String;             attribute inStock: Boolean;             attribute quantity: Number;             attribute listPrice: Number;             attribute totalCost: Number;        }          attribute Item.totalCost = bind quantity*listPrice;         class Cart {             attribute items: Item*;             attribute subTotal: Number;        }          operation sumItems(itemList:Item*) {             var result = 0.00;            for (item in itemList) {                 result += item.totalCost;            }            return result;        }          attribute Cart.subTotal = bind sumItems(items);          var cart = Cart {             items:            [Item {                 id: "UGLY"                 productId: "D100"                 description: "BullDog"                 inStock: true                 quantity: 1                 listPrice: 97.50            },             Item {                 id: "BITES"                 productId: "D101"                 description: "Pit Bull"                 inStock: true                 quantity: 1                 listPrice: 127.50            }]        };        Frame {              content: Label {                 text: bind                    "<html>                        <h2 align='center'>Shopping Cart</h2>                        <table align='center' border='0' bgcolor='#008800' cellspacing='2' cellpadding='5'>                           <tr bgcolor='#cccccc'>                              <td><b>Item ID</b></td>                              <td><b>Product ID</b></td>                              <td><b>Description</b></td>                              <td><b>In Stock?</b></td>                              <td><b>Quantity</b></td>                              <td><b>List Price</b></td>                              <td><b>Total Cost</b></td>                              <td> </td>                            </tr>                             {                              if (sizeof cart.items == 0)                              then "<tr bgcolor='#FFFF88'><td colspan='8'><b>Your cart is empty.</b></td></tr>"                              else foreach (item in cart.items)                                  "<tr bgcolor='#FFFF88'>                                   <td>{item.id}</td>                                   <td>{item.productId}</td>                                   <td>{item.description}</td>                                   <td>{if item.inStock then "Yes" else "No"}</td>                                   <td>{item.quantity}</td>                                   <td align='right'>{item.listPrice}</td>                                   <td align='right'>{item.totalCost}</td>                                   <td> </td>                                   </tr>"                            }                             <tr bgcolor='#FFFF88'>                                 <td colspan='7' align='right'>                                    <b>Sub Total: ${cart.subTotal}</b>                                </td>                                <td> </td>                             </tr>                          </table>                       </html>"                }                 visible: true        }

运行以上程序,显示如下:

如果您编程删除购物车内容:

delete cart.items;

您将看到如下内容:

在以上示例中,内嵌的JavaFX表达式(粗体显示)动态创建HTML表格列和表格单元的内容。当这些表达式依赖的对象有变化时,Label的HTML内容将自动更新。

以上示例还非常有趣,因为其演示了使用表达式定义属性值的用法。Item类的totalCost属性和Cart类的subTotal属性被绑定为表达式以计算它们的值。任何时候这些表达式的依赖对象发生变化,属性值将被自动重新计算并更新。考虑在电子表格中,某些单元格包含指向其他单元格的表达式,当您在这些其他单元格输入数据,包含依赖它们的表达式的单元格值也被自动更新了。

HTML中的图像

JavaFX Label类实际上封装了一个特殊的JEditPane,该JEditorPane使用一个支持用Java类转载器从JAR文件中载入图像的共享图像缓存。因此,您可以就像普通的文件URL一样使用HTML的<img>元素引用您的应用的图像资源包。

超链接

Label类同样支持HTML超链接,内嵌一个特殊的URL给HTML<a>元素的href属性。

这样的URL使用JavaFX #操作符创建,该操作符生成一个字符串化对象引用(Stringified Object Reference)指向后续可以被JavaFX复引用的操作对象。?操作符,例如:

var a = 20;var b = #a;assert b instanceof String; // 通过var c = (Number) ?b;assert a == c;  // 通过

Label类的HTML显示器认识诸如HTML的<a href=url>这样的URL,使用URL来响应元素的鼠标点击,并且如果URL值指向一个函数或操作的话,它可以调用该函数或操作。

例如,以下是使用带超链接标签代替按钮的前面按钮点击示例的重写版本:

import javafx.ui.*;import java.lang.System; class ButtonClickModel { attribute numClicks: Number;} var model = new ButtonClickModel(); var win = Frame {   width: 300   height:200   menubar: MenuBar {     menus: Menu {       text: "File"       mnemonic: F       items: MenuItem {         text: "Exit"         mnemonic: X         accelerator: {           modifier: ALT           keyStroke: F4           }         action: operation() {          System.exit(0);           }        }      }   }   content: GridPanel {     border: EmptyBorder {  top: 30  left: 30  bottom: 30  right: 30     }     rows: 2     columns: 1     vgap: 10     cells:    [Label {        text: bind       "<html>           <a href='{#(operation() {model.numClicks++;})}'>             I'm a hyperlink!           </a>         </html>"       },     Label {        text: bind "Number of button clicks: {model.numClicks}"      }]  }   visible: true};

以上示例中粗体的表达式创建一个新的递增model的numClicks属性的操作。使用#操作符生成后续将被键入到HTML标记中的指向该操作的URL。

运行该程序,显示如下:

点击超链接两次后,显示如下:

 

分享到:
评论

相关推荐

    javafx2.2.3 eclipse4.2.1插件

    3. **JavaFX源代码编辑**:e(fx)clipse提供了对FXML文件的支持,这是JavaFX界面布局的主要方式。它可以自动识别FXML文件中的元素并提供代码补全功能,方便开发者编写控制器类。 4. **Scene Builder集成**:Scene ...

    JavaFX Script 入门教程

    将Sun的官方教程整理成PDF文件,方便查看

    javaFx script

    ### JavaFX Script编程语言概述与核心概念 #### JavaFX Script简介 JavaFX Script是一种用于创建具有流畅用户界面的应用程序的动态编程语言。该语言由Sun Microsystems开发,旨在为Java平台带来更加直观、高效的...

    JavaFX eclipse for eclipse3.4插件

    Eclipse Plugin for JavaFX Start building JavaFX applications on Eclipse with the JavaFX plugin for Eclipse IDE 3.4 or newer.

    安装Eclipse的JavaFX插件1

    "安装Eclipse的JavaFX插件" 在本篇文章中,我们将详细介绍如何安装Eclipse的JavaFX插件,以便开发者更好地使用JavaFX开发工具。下面是安装步骤的详细解释: 首先,需要下载最新版本的Eclipse 4.5 SDK,这是安装...

    Eclipse的JavaFX插件

    在JavaFX官方网站看见的。目前还是beta版本! JavaFX Plugin for Eclipse was started in December 2008, is owned by mryzl, and has 15 members.

    Eclipse 4 与 JavaFx开发教程

    Eclipse 4与JavaFx开发教程是一份旨在指导开发者如何在Eclipse 4环境下集成JavaFx以及搭建基础开发环境的教材。本教程详细阐述了如何利用e(fx)clipse插件,一个专为Eclipse开发的JavaFx集成解决方案,进行开发和调试...

    eclipse配置JRE 8 + JAVAFX + scenebuilder解压后点击eclipse即可使用

    JRE 8 + JAVAFX + scenebuilder已经被作者配置好并压缩至压缩包中,不需要额外配置环境(包括下载scenebuilder和在eclipse中下载JAVAFX),但gson安装包需要额外配置,这方面老师应该会讲。使用此压缩包只要打开...

    JavaFX Script 脚本编程语言

    JavaFX Script 编程语言入门教程 JavaFX Script 编程语言是 Java 多媒体技术方面的应用,设计 JavaFX 入门编程。 JavaFX Script 编程语言基于 Java 平台,因此要求在系统上安装 JDK 5 或 JDK 6(6 更快)。在开始...

    javafx入门教程

    Lesson 1: Getting Started with JavaFX Script Lesson 1将指导您学习JavaFX脚本语言的基础知识,例如变量声明、数据类型、操作符等。 Step 1: 下载并安装JDK JavaFX脚本语言需要JDK 5或JDK 6支持,请下载并安装...

    eclipse/IDEA配置javafx项目步骤

    在配置javafx之前,需要到Oracle或openJFX的官网下载javafx压缩包并解压,解压路径最好和Java的jdk放在同一目录方便寻找,在下载解压javafx包之后,开始配置javafx项目: 一:eclipse如何配置javafx 1.安装e(fx)...

    JavaFx入门教程

    JavaFx的主要组件包括Script和Mobile两个部分,Script是用于开发桌面应用程序的组件,而Mobile是为移动设备开发Java应用的平台。JavaFx的特点是能够在Java虚拟机上运行,不需要浏览器支持,可以在支持Java的PC和手机...

    基于JavaFX的迷宫小游戏 Java 、Eclipse 、JavaFX.zip

    【标题】中的“基于JavaFX的迷宫小游戏 Java 、Eclipse 、JavaFX.zip”表明这是一个使用Java编程语言,借助Eclipse IDE和JavaFX图形库开发的迷宫游戏项目。JavaFX是一个用于构建桌面应用、移动应用和网页应用的富...

    JavaFX Script 语言教程(面向Swing 程序员).pdf

    JavaFX Script 提供了一系列高级特性,如第一级函数、声明式的语法结构、列表推导以及基于依赖关系的增量式求值,这些都使得GUI应用的开发变得更加高效和直观。 #### 第一级函数与列表推导 JavaFX Script 支持第一...

    JavaFx 入门文档,JavaFx实例

    设置好开发环境后,你可以使用IDEA或Eclipse等集成开发环境,安装对应的JavaFX插件来方便地进行开发。 在JavaFX中,你可以使用FXML(FXML Language)来描述用户界面的结构,或者直接用Java代码创建和操作节点。例如...

    openjdk8 with javafx

    OpenJDK8 with JavaFX 是一个开放源代码的Java开发工具包,它包含了Java标准版(Java SE)的实现,以及JavaFX库。OpenJDK是Oracle JDK的开源替代品,由OpenJDK社区维护和开发,而JavaFX是构建桌面、移动和Web应用...

    基于JavaFX的迷宫小游戏 Java 、Eclipse 、JavaFX(答辩 PPT+源码)

    【作品名称】:基于JavaFX的迷宫小游戏 Java 、Eclipse 、JavaFX(答辩 PPT+源码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...

    JavaFX 8 实例教程

    5. 创建JavaFX项目:使用Eclipse新建JavaFX项目,并配置项目结构,包括创建Model-View-Controller (MVC)三个主要部分的包结构。MVC是一种设计模式,有助于分离应用程序的数据、视图和控制逻辑。 6. FXML布局文件:...

    安装javafx开发环境eclipse插件和JavaFX Scene Builder

    - **第三步:安装 JavaFX Scene Builder** - 双击下载的 `.msi` 文件开始安装过程。 - 选择合适的安装路径,一般情况下默认设置即可。 - 安装完成后,可以在指定目录找到 JavaFX Scene Builder 的可执行文件。 -...

Global site tag (gtag.js) - Google Analytics