`
xhuixuanwen
  • 浏览: 6573 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

javafx构造一组玻璃状园Button

阅读更多
package javafxapplication14;

import javafx.stage.Stage;
import javafx.scene.Scene;

import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;


/**
 * @author Administrator
 */
function actionPerformed(color:String) :Void {
    println(color);
}

Stage {
    title: "button"
    width: 320
    height:200
    scene: Scene {
        content: [
            Rectangle {
                x: 0, y: 0
                width: 320, height: 200
                fill: Color.web("#4f6068")
            },
            FXButton {
                offsetX: 40
                offsetY: 50
                lightColor: "#fc1503"
                darkColor: "#460702"
                action: actionPerformed
            },
            FXButton {
                offsetX: 100
                offsetY: 50
                lightColor: "#657efd"//042dfb"
                darkColor: "#02124d"
                action: actionPerformed
            },
            FXButton {
                offsetX: 160
                offsetY: 50
                lightColor: "#27FB04"
                darkColor: "#0B4402"
                action: actionPerformed
            },
            FXButton {
                offsetX: 220
                offsetY: 50
                lightColor: "#f4fd02"
                darkColor: "#414301"
                action: actionPerformed
            }
        ]
    }
}

package javafxapplication14;

import javafx.scene.CustomNode;

import javafx.scene.Group;
import javafx.scene.Node;

import javafx.scene.paint.Color;

import javafx.scene.shape.Circle;
import javafx.scene.effect.GaussianBlur;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.scene.shape.VLineTo;
import javafx.scene.transform.Transform;

import javafx.scene.effect.Glow;

import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.scene.input.MouseEvent;

/**
 * @author Administrator
 */

// place your code here
public class FXButton extends CustomNode {
    package var offsetX:Number;
    package var offsetY:Number;
    package var lightColor:String;
    package var darkColor:String;
    var glowLevel:Number = 0.0;
    var glow = Glow { level: bind glowLevel };

    package var action: function(:String) : Void;

    override function create() : Node {
        Group {
            translateX: offsetX;
            translateY: offsetY;
            content:[
                Group {
                    effect: bind glow
                    content:[
                        Circle {
                        effect: GaussianBlur {  radius: 10.0 }
                        centerX: 18, centerY: 18
                        radius: 18
                        fill: Color.BLACK
                        transforms: Transform.translate(-2, -2)
                        },
                        Circle {
                            effect: GaussianBlur {  radius: 10.0 }
                            centerX: 18, centerY: 18
                            radius: 18
                            fill: Color.color(1, 1, 1, 0.6)
                            transforms: Transform.translate(1, 1)
                        },
                        Circle {
                            centerX: 18, centerY: 18
                            radius: 18
                            fill:
                            LinearGradient {
                                startX : 0.0
                                startY : 0.0
                                endX : 0.0
                                endY : 1.0
                                stops: [
                                    Stop {
                                        color : Color.web(darkColor)
                                        offset: 0.0
                                    },
                                    Stop {
                                        color : Color.web(lightColor)
                                        offset: 1.0
                                    },

                                ]
                            }
                        },
                        Path {
                            fill: Color.BLACK
                            stroke: Color.color(1, 1, 1, 0.4)
                            
                            elements : [
                                MoveTo {
                                    x : 0.0, y : 0.0
                                },
                                VLineTo {
                                    y : 20
                                },
                                LineTo {
                                    x : 16, y : 10
                                },
                                LineTo {
                                        x : 0.0, y : 0.0
                                },
                            ]
                            transforms: Transform.translate(11, 7)
                        },
                        Circle {
                            effect: GaussianBlur{  radius: 8.0 }
                            centerX: 18, centerY: 18
                            radius: 15
                            fill:
                            LinearGradient {
                                startX : 0.0
                                startY : 0.0
                                endX : 0.0
                                endY : 1.0
                                stops: [
                                    Stop {
                                        color : Color.WHITE
                                        offset: 0.0
                                    },
                                    Stop {
                                        color : Color.TRANSPARENT
                                        offset: 1.0
                                    },

                                ]
                            }
                        },
                    ]
                    onMouseEntered: function( e: MouseEvent ):Void {
                        fader.rate = 1;
                        fader.play();
                    }
                    onMouseExited: function( e: MouseEvent ):Void {
                        fader.rate = -1;
                        fader.play();
                    }
                    onMouseReleased: function( e: MouseEvent ):Void {
                        action("lightColor:{lightColor}   darkColor:{darkColor}");
                    }
                }
            ]
        }
    }
    def fader:Timeline = Timeline {

        keyFrames : [
            KeyFrame {
                time : 200ms
                values : [
                    glowLevel => 0.6 tween Interpolator.LINEAR
                ]

            }
        ]
    };
}

  • 大小: 12.4 KB
0
0
分享到:
评论
1 楼 liuwangxia 2009-08-20  
[quote=xhuixuanwen]@author Administrator
最好别在Administrator账号下工作,而用普通账号。

相关推荐

    Java AWT组件综合练习

    接着,`Choice`组件类似于下拉菜单,用于展示一组可选项,但只显示一个选择项。与`List`不同,`Choice`默认只在用户点击时显示所有选项。同样,你可以用`add()`方法添加选项,或者用`setItems()`一次性设置所有选项...

    java基本组件使用

    对于Java UI组件,可以查看Oracle提供的JavaFX或Swing官方API文档,了解每个组件的构造方法、属性和方法。此外,GitHub上也有大量优秀的开源项目,可以作为学习和参考的资源。 综合应用是指将不同组件组合起来,...

    神级压缩方法

    `java.awt`是Abstract Window Toolkit(抽象窗口工具包)的缩写,它提供了一组用于创建GUI应用程序的类和接口。而`java.awt.event.*`则提供了与AWT组件相关的事件处理类,例如监听器等。 ### 2. 创建GUI组件 在这...

    Java计算器

    Swing 是一个老但功能强大的库,而 JavaFX 提供了更现代的外观和感觉,支持更多的动画和自定义样式。 1. **Swing 库的使用** - `JFrame`:这是GUI应用程序的主要窗口,所有组件都添加到这个框架上。 - `JPanel`:...

    用AWT编写的画板,可以任意选择颜色

    在Java编程语言中,AWT(Abstract Window Toolkit)是一个早期的图形用户界面(GUI)库,用于创建窗口和其他...虽然AWT已经被Swing和JavaFX等现代GUI库所取代,但它仍然是理解Java图形界面编程基础知识的一个重要起点。

    java 程序的围棋小游戏

    - **用户界面**:可以通过使用更现代的GUI库(如Swing或JavaFX)来改进用户界面的美观性和用户体验。 - **网络支持**:增加网络功能,使玩家能够在线对弈。 综上所述,这个简单的围棋游戏不仅展示了如何使用Java ...

    JAVA核心技术

    - **类**:对象的蓝图,定义了一组共同属性和方法。 ##### 6.3 成员变量和局部变量 - **成员变量**:定义在类中的变量,属于类的每个实例。 - **局部变量**:定义在方法或代码块内的变量,仅在该范围内有效。 ####...

    CoreJava学习笔记

    集合框架提供了一种灵活的方式来存储和操作一组对象。Java中的集合框架主要包括List、Set和Map等接口。 **反射:** 反射是一种强大的Java特性,它允许在运行时动态地获取类的信息并操作类的对象。 #### 八、异常 ...

    defrac-sample-uikit

    在这个项目中,你可以看到如何用Java来构造模拟UIKit的组件,以及如何组织它们来创建一个简单的用户界面。通过阅读源代码,学习其结构和逻辑,你将能更好地理解和掌握UIKit的基本原理。 在实践中,我们可能会遇到跨...

Global site tag (gtag.js) - Google Analytics