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
分享到:
相关推荐
接着,`Choice`组件类似于下拉菜单,用于展示一组可选项,但只显示一个选择项。与`List`不同,`Choice`默认只在用户点击时显示所有选项。同样,你可以用`add()`方法添加选项,或者用`setItems()`一次性设置所有选项...
对于Java UI组件,可以查看Oracle提供的JavaFX或Swing官方API文档,了解每个组件的构造方法、属性和方法。此外,GitHub上也有大量优秀的开源项目,可以作为学习和参考的资源。 综合应用是指将不同组件组合起来,...
`java.awt`是Abstract Window Toolkit(抽象窗口工具包)的缩写,它提供了一组用于创建GUI应用程序的类和接口。而`java.awt.event.*`则提供了与AWT组件相关的事件处理类,例如监听器等。 ### 2. 创建GUI组件 在这...
Swing 是一个老但功能强大的库,而 JavaFX 提供了更现代的外观和感觉,支持更多的动画和自定义样式。 1. **Swing 库的使用** - `JFrame`:这是GUI应用程序的主要窗口,所有组件都添加到这个框架上。 - `JPanel`:...
在Java编程语言中,AWT(Abstract Window Toolkit)是一个早期的图形用户界面(GUI)库,用于创建窗口和其他...虽然AWT已经被Swing和JavaFX等现代GUI库所取代,但它仍然是理解Java图形界面编程基础知识的一个重要起点。
- **用户界面**:可以通过使用更现代的GUI库(如Swing或JavaFX)来改进用户界面的美观性和用户体验。 - **网络支持**:增加网络功能,使玩家能够在线对弈。 综上所述,这个简单的围棋游戏不仅展示了如何使用Java ...
- **类**:对象的蓝图,定义了一组共同属性和方法。 ##### 6.3 成员变量和局部变量 - **成员变量**:定义在类中的变量,属于类的每个实例。 - **局部变量**:定义在方法或代码块内的变量,仅在该范围内有效。 ####...
集合框架提供了一种灵活的方式来存储和操作一组对象。Java中的集合框架主要包括List、Set和Map等接口。 **反射:** 反射是一种强大的Java特性,它允许在运行时动态地获取类的信息并操作类的对象。 #### 八、异常 ...
在这个项目中,你可以看到如何用Java来构造模拟UIKit的组件,以及如何组织它们来创建一个简单的用户界面。通过阅读源代码,学习其结构和逻辑,你将能更好地理解和掌握UIKit的基本原理。 在实践中,我们可能会遇到跨...