This is example of an internal frame. (Old code does not work in JavaFX 1.3)
200.39.8.121 15:13, August 18, 2011 (UTC)[]
import javafx.ui.*; import javafx.ui.canvas.*; import javafx.ui.filter.*; import java.lang.Math;
class Wind {
attribute angle:Number; attribute sAngle:Number; attribute tAngle:Number; public operation setAngle(nAngle:Number); public operation zero(); public operation random();
}
operation Wind.setAngle(nAngle) {
tAngle = nAngle; sAngle = angle; angle = [sAngle..tAngle] dur Math.abs(tAngle-sAngle)*2 linear;
}
operation Wind.zero() {
setAngle(0);
}
operation Wind.random() {
setAngle((Math.random()*360).intValue());
}
class Windsign extends CompositeNode {
attribute wind:Wind;
}
function Windsign.composeNode() =
Group { var x = 50 var y = 50transform: bind translate(x, y), onMouseDragged: operation(e) { x += e.localDragTranslation.x; y += e.localDragTranslation.y; } toolTipText: "You can totally drag me around!", content: [ Circle { cursor: HAND, cx: 50, cy: 50, radius: 50, fill: cyan, stroke: blue, strokeWidth: 2, }, Polygon { points: [50,0, 55,98, 50,95, 45,98] fill: darkblue transform: bind rotate(wind.angle,50,50) } ] }; Frame{ var wind = Wind {} var ws = Windsign { wind:wind } title:"Windsign" background: white visible:true content: BorderPanel { top: FlowPanel { background: white, content: [ Slider { min: 0, max: 360, minorTickSpacing: 15, majorTickSpacing: 45, paintTicks: true, value: bind wind.angle, }, Button { text: "Zero", action: operation() { wind.zero(); } }, Button { text: "Random", action: operation() { wind.random(); } } ] } center: Canvas { background: white content:ws } } }