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

JavaFX Demo学习2-----ImageRollover

    博客分类:
  • RIA
阅读更多
今天偷个懒。一个很简单的程序,响应鼠标事件,效果如下。代码在附件。



鼠标点上会变色,其实就是换图片,Swing里面也很简单就实现了。看下代码。
public class CloseButton extends CustomNode {
    private attribute image:Image;
    private attribute images:Image[];
    public attribute onClicked:function():Void;
    
    init {
        images = [
            Image { url: __DIR__+"resources/close_normal.png" },
            Image { url: __DIR__+"resources/close_hover.png" },
            Image { url: __DIR__+"resources/close_pressed.png" },
        ];
        image = images[0];
    }
    
    public function create():Node {
        return ImageView {
            image: bind image
            onMouseEntered:  function(e:MouseEvent) { image = images[1] }
            onMouseExited:   function(e:MouseEvent) { image = images[0] }
            onMousePressed:  function(e:MouseEvent) { image = images[2] }
            onMouseReleased: function(e:MouseEvent) { 
                image = images[0];
                if(onClicked != null) {
                    onClicked();
                }
            }
        }
    }
    
}

Frame {
    visible: true
    stage: Stage {
        content: CloseButton { 
        }
    }
}

Frame里面显示CloseButton这个继承了CustomNode的Node,CloseButton里面重写create方法。很简单,当作前一个例子的复习。

在CloseButton里面,定义了三个属性,一个Image类型,一个Image数组类型,一个则是个没有返回值的方法。
接着是一个init{...},这个东东前一个程序也出现了,好像没解释,不过应该能猜出来,相当于java里的构造方法。写个测试例子看看。

package imagerollover;

import java.lang.System;

/**
 * @author Ivan
 */

public class TestInit {
    init{
        System.out.println("Hello");
    }
}

TestInit{}

运行试试,会打印出Hello。这就证明了init{}是相当于java里构造方法的东东。另外也证实了,javaFX里面实例化对象的方法是类名后面加个{}。还有一个注意的,不过也没什么,就是javaFX里面,不会自动的导入java.lang.*这个包,所以,你要使用System这个类的话,就要先导入java.lang.*这个包。

初始化完之后,返回了一个ImageView,之前是返回一个Group,里面包含了n个Node的子类,这里只返回一个,这里又用到了bind,具体机制还不清楚,只要知道,使用了bind,当一个值改变后,另一个值也会随之变化。可以试试看,把bind去掉后,会有什么区别。

在这里也出现了__DIR__,观察下目录结构,发现,此符号应该就是代表此类所在的位置了。

接着是四个鼠标事件。和Swing很类似,鼠标移入,移出,按下,释放,分别触动什么方法。
在鼠标释放的方法中,判断onClicked方法是否为空,不为空则执行,这里为空,所以不执行,可以自己加一个打印代码,测试一下

只要在init里面加上
onClicked = function(){
            System.out.println("Clicked");
        };

就行了。记得导入java.lang.System
  • 大小: 3.4 KB
3
0
分享到:
评论

相关推荐

    JavaFX Demo学习1-----Clock

    Clock Demo 博文链接:https://ivaneye.iteye.com/blog/264628

    javafx_scenebuilder-2_0-windows.rar

    这个压缩包“javafx_scenebuilder-2_0-windows.rar”显然是JavaFX Scene Builder的Windows版本,版本号为2.0。 在JavaFX Scene Builder 2.0中,开发者可以找到一系列预先定义的GUI组件,如按钮、文本框、表格、菜单...

    javafx_scenebuilder-2_0安装包

    在下载的压缩包文件中,"javafx_scenebuilder-2_0-windows.msi"是一个Windows安装程序文件,这意味着它是专门为Windows用户准备的。安装此文件后,开发者就能在Windows系统上使用JavaFX Scene Builder 2.0,从而加速...

    javafx scene builder 2.0-windows.msi.7z

    JavaFX Scene Builder 2.0 是一款图形化用户界面(GUI)构建工具,专为JavaFX平台设计。它使得开发者可以快速、直观地设计和布局应用程序的用户界面,而无需编写大量的代码。这款软件尤其适合那些希望专注于业务逻辑...

    javafx_scenebuilder-2_0-windows

    在本压缩包"javafx_scenebuilder-2_0-windows"中,包含的是Scene Builder 2.0的Windows版本安装文件"javafx_scenebuilder-2_0-windows.msi"。 JavaFX自身是一个强大的富客户端应用程序开发框架,支持创建桌面、移动...

    openjfx-jar.zip

    javafx.base-11.0.0-SNAPSHOT-linux.jar,javafx.base-11.0.0-SNAPSHOT-mac.jar,javafx.base-11.0.0-SNAPSHOT-win.jar,javafx-base-11.jar,javafx-base-11-win.jar,javafx-graphics-11.jar,javafx-graphics-11-win....

    javafx_scenebuilder-2_0-windows.zip

    JavaFx SceneBuilder2.0 看好多人官网下载不了我放这里面

    JavaFX_SceneBuilder-2.0_Windows_64

    JavaFX是基于java语言的 图形化界面工具箱,带有大量的内置组件,如按钮,文本字段,表格,树,菜单,图表等; JavaFX支持 2D图形、3D图形、WebView; JavaFX编写的程序,可以运行在 Windows、Linux、Mac、iOS、Android / ...

    javafx_scenebuilder-2_0-windows.msi

    javafx_scenebuilder-2_0-windows.msi 官方下载地址: https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html

    javafx-sdk-17.0.2-lts-windows-x64

    JavaFX SDK 17.0.2 LTS 是一个用于创建桌面和基于浏览器的富客户端应用程序的工具包,专为Windows x64平台设计。这个版本是长期支持(LTS)版本,意味着它将提供更长期的维护和支持,适合于那些需要稳定开发环境的...

    javafx-sdk-11.0.2

    2. **示例代码**:可能包含`samples`目录,其中提供了使用JavaFX编写的示例应用程序,帮助开发者理解和学习如何使用JavaFX进行开发。 3. **文档**:SDK可能还包括API文档,通常位于`docs`目录下,这对于查阅JavaFX...

    学习JavaFX脚本语言--中文PDF版

    2. **2D和3D图形**:JavaFX支持高性能的2D和3D图形渲染,允许开发者创建复杂的视觉效果和动画。 3. **CSS样式和皮肤**:JavaFX应用可以使用CSS来定义组件的外观,实现类似Web页面的样式控制。 4. **媒体支持**:内...

    javafx18sdk,javafx-sdk-18,的次源包,javafx运行库,可以向下兼容,linux系统下可附加使用

    linux系统下,可用如下两...java --module-path /home/ubuntu20/javafx-sdk-18/lib --add-modules javafx.controls,javafx.fxml -jar EQMSAny_jar.jar 其中 /home/ubuntu20/javafx-sdk-18 是上包所解压后的你放置的路径

    javafx_scenebuilder-2_0.zip

    javafx_scenebuilder-2_0-windows.msi javafx_scenebuilder-2_0-macosx-universal.dmg javafx_scenebuilder-2_0-linux-x64.tar.gz javafx_scenebuilder_samples-2_0.zip javafx_scenebuilder_kit_javadoc-2_0.zip

    javaFx 学习--之布局菜单

    javaFx 学习--之布局菜单

    javafx-scenebuilder-2-0-windows.exe

    javafx_scenebuilder-2_0-windows.exe

    java界面布局开发用软件:javafx_scenebuilder-2_0-windows.zip

    netbean中,java语言开发怎样很好很快地布局?这是一个开发效率的重要问题。这里提供了一个很好用的工具,可以方便快捷地绘制出java的界面,从而实现桌面程序的快捷开发。

Global site tag (gtag.js) - Google Analytics