`

体验了一把JavaFx

阅读更多
    JavaOne放出来的新东西,出来也有段时间了,看了论坛和blog上的讨论,叫好、不看好的各占一半。今天就去https://openjfx.dev.java.net/ 下载了netbean插件,按照getting startted做了一些例子。总体来说,JavaFx仍然是在awt/swing的基础上的包装,只不过用一层薄薄的性感语法包装了一把,而且这语法与javascript等脚本语言基本一致,特别是声明性的编程语法与json非常相似。据sun声称要退出一个消费者版本的jre,大概5M-9M大小,消息参见《桌面java的缺陷:面向消费者的jre》,这个恐怕也是给JavaFx专门定制的吧。个人观点:没有什么令人激动的新鲜玩意,特别是布局方面仍然是麻烦的layout机制,对多媒体的支持还是比不上flash,优点在于与java服务端通信方面(因为都是java平台)可能比较有优势,另外就是消费者版本jre的推出是个好消息,jre实在太大了。

    说了这么多,看看Hello World怎么写的,实在与json太相似了:
<!---->import javafx.ui.*;
Frame {
     title: 
"Hello World JavaFX"
     width: 
200
     height: 
200
     content: Label {
      text: 
"Hello World"
     }
     visible: 
true
}

    这是声明方式来创建一个Frame,Frame里面放个Label,Label上一句Hello World。也可以采用编程方式:
<!---->        var win = new Frame();
        win.title 
= "Hello World JavaFX";
        win.width 
= 200;
        
var label = new Label();
        label.text 
= "Hello World";
        win.content 
= label;
        win.visible 
= true;

这语法与javascript有什么不同呢?
    再来看看事件处理,仍然遵循MVC模式,比如我们希望输入框的文字修改能同时修改窗体的title,首先定义一个Model:
<!---->       class HelloWorldModel {
            attribute saying: String;
        }

        var model 
= HelloWorldModel {
            saying: 
"Hello World"
        };

    把Model绑定到View上:
   
<!---->        var win = Frame {
            title: bind 
"{model.saying} JavaFX"
            width: 
200
            content: TextField {
                value: bind model.saying
            }
            visible: 
true
        };

TextFiled的value与model的saying操作进行了绑定,而Frame的title也绑定了model的saying方法,因此输入框的文字改变的话,也会反映到title上咯。"{model.saying} JavaFX"倒是类似ruby对字符串的处理方法了。这些例子代码完全来自 Getting Started With JavaFx script language,更多精彩内容请自己解读。题外话:netbean蛮好用的啊,在我的1G内存机器上跑的挺欢。



dennis 2007-05-18 11:05 发表评论
分享到:
评论

相关推荐

    精美界面素材包

    总的来说,【精美界面素材包】是设计者手中的一把利器,提供了丰富的设计资源,能够有效提高设计效率,降低创作成本。通过巧妙利用这些素材,设计师可以创造出独特且引人入胜的网站界面,提升用户的浏览体验,从而...

    Java嵌入谷歌内核简单浏览器跨平台

    总之,Java嵌入谷歌内核的简单浏览器——JxBrowser,为Java开发者提供了一个强大且灵活的工具,能够在Java应用中轻松集成现代Web浏览体验,同时保持跨平台的兼容性和易用性。无论是构建桌面应用、企业级系统还是其他...

    图形界面化设计

    JavaFX则是一个更现代、更强大的GUI框架,支持2D和3D图形、CSS样式以及动画效果。它基于开放源代码的JavaFX Scene Graph,允许开发者创建富媒体、响应式和美观的用户界面。JavaFX还支持Java 8及更高版本,并且可以...

    DrivingSchoolCMS:驾驶学校客户管理系统

    对于开发者而言,这个项目提供了学习和实践JavaFX的绝佳案例,对于驾驶学校而言,它是一把开启数字化管理的金钥匙。通过深入学习和理解JavaFX技术,我们可以更好地利用"DrivingSchoolCMS",为驾驶学校的日常运营带来...

    Getting the number of columns in report view获得列表视图的列

    列表视图是Windows API或许多编程框架(如.NET Framework、JavaFX、Qt等)中的一种控件,用于显示一系列项目,每个项目可以有多个字段或列。获取列表视图的列数对于调整布局、计算宽度分配以及确保数据正确显示至关...

    带图标的菜单

    例如,一个文件保存图标通常表现为一个小的硬盘图像,一个剪切操作可能用一把剪刀来表示,复制操作则可能是一个复写本或纸张的图像。这些图标已经成为通用的符号,被广泛接受并理解。 实现"带图标的菜单"通常涉及...

    Java实现拖拽列表项的排序功能

    以下是一个简化的JavaFX示例: ```java @FXML private ListView&lt;String&gt; listView; public void initialize() { listView.setOnDragDetected(new EventHandler() { @Override public void handle(MouseEvent ...

    简易游戏地图设计器

    程序采用了把保存坐标数据的方法移到单独的类这一设计策略,这是软件工程中的模块化思想体现。将数据保存功能独立出来,有利于代码的组织和维护,同时降低了代码的耦合度,提高了程序的可读性和可扩展性。通过这种...

    COMBOBOX控件

    在Java Swing或JavaFX中,也有相似的JComboBox类用于创建下拉列表组件。 在实际应用中,多个COMBOBOX之间可能存在数据传递的需求。例如,一个ComboBox的选择可能会影响另一个ComboBox的显示内容。这通常通过事件...

    java几种基本排序(动态演示)

    把第一个元素视为已排序。 2. 比较第二个元素与已排序的第一个元素,若小于则插入,并调整已排序部分的顺序。 3. 继续比较第三个元素,以此类推,直到所有元素都插入正确位置。 3. **冒泡排序**: - 基本思想:...

    pt.zip_PT_不规则拼图

    在数字环境中实现这样的功能,需要对图像进行分割,即把原始图像拆分成多个不规则的部分。这通常涉及到图像处理技术,比如边缘检测、形状识别或区域生长算法等。这些算法可以分析图像内容并生成适合拼接的不规则形状...

    用java 做的一个聊天程序

    该压缩包文件包含了一个使用Java编程语言开发的聊天程序,由用户Wangmeng通过JBuilder集成开发环境创建。...同时,对于有经验的开发者来说,这也是一个研究和改进的实例,可以学习到如何优化代码性能,提高用户体验。

    java代码实现俄罗斯方块.zip

    当一行被填满时,需要删除这行并把上面的所有行下移一格。这个过程可以通过遍历棋盘并更新数组来实现。 事件处理也是必不可少的,包括键盘输入控制方块的移动和旋转,以及时间触发的方块自动下落。Java提供了诸如`...

    图片幻灯片切换特效用Java写的

    这种效果能够使用户以动态的方式浏览一系列图片,增强了用户体验。下面将详细介绍如何使用Java实现这一功能。 首先,我们需要理解Java的Swing或JavaFX库,这两个库都提供了构建图形用户界面(GUI)的组件。对于这个...

    Lable 多行显示

    - 在许多编程环境中,如Windows Forms、WPF、Qt或JavaFX,Label默认只能显示一行文本。如果文本内容较长,超出Label的宽度,它不会自动换行,而是用省略号(...)截断。 - 要实现多行显示,我们需要设置Label的相关...

    医院挂号系统待机界面

    在描述中提到的“简单的java运用,把类,继承,接口共同运用”,这表明开发者在设计系统时遵循了面向对象编程的原则。下面我们将深入探讨这三个核心概念。 1. 类(Class):在Java中,类是对象的蓝图,定义了一组...

    非常很简单的象棋,但是不知道为什么csdn一定要把标题写的长一点

    “界面非常粗糙”意味着这个程序可能没有采用复杂的图形用户界面(GUI)库,如Swing或JavaFX,而是选择了更基础的控制台界面。在控制台环境下,游戏可能通过文本命令进行交互,玩家输入棋盘坐标来移动棋子。这种简化...

    改变控件的背景颜色(LISTBOX)

    在这个场景中,我们关注的是“LISTBOX”,即列表框,一个可以显示多项选择的控件。在不同的编程语言和框架中,改变列表框背景颜色的方法会有所不同,但基本思路是类似的。下面将详细介绍如何在几种常用的编程环境中...

    中国象棋java 实现人人对战

    在编程时,我们需要把这些规则转化为计算机可以理解和执行的算法。 接下来是对象模型设计。每个棋子可以被表示为一个类,包含其颜色、位置等属性,并定义相应的移动方法。棋盘也可以作为一个类,存储当前棋局的状态...

    JFormDesigner-4.0.4-eclipse插件

    通常,新版本会修复前一版本存在的问题,增加新功能,或者提升用户体验。 - LICENSE.html文件包含了软件的许可协议,规定了使用、分发和修改JFormDesigner的条件。确保在使用前仔细阅读,以遵守法律条款。 3. **...

Global site tag (gtag.js) - Google Analytics