カーソルをカスタマイズする
なんで上のようなことを見つけたかというと、カーソルを書き換えたかったからなんです。
カスタムカーソルはイメージを読み込んで、それを引数にして java.awt.Toolkit の createCustomCursor メソッドをコールします。これで得られるのは Java のカーソルなので、これを JavaFX のカーソルの awtCursor アトリビュートに代入します。
ということで、ブロックを使ってカスタムカーソルを作ってみました。
import javafx.application.Frame; import javafx.application.Stage; import javafx.scene.Cursor; import javafx.scene.geometry.Rectangle; import javafx.scene.paint.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.Toolkit; import java.net.URL; var cursor: Cursor = Cursor { awtType: java.awt.Cursor.CUSTOM_CURSOR awtCursor: { var toolkit:Toolkit = Toolkit.getDefaultToolkit(); var image: java.awt.Image = toolkit.getImage(new URL("{__DIR__}cursor.gif")); toolkit.createCustomCursor(image, new Point(7, 7), "MAGNIFIER"); } }; Frame { title: "CursorSample" width: 200 height: 200 closeAction: function() { java.lang.System.exit( 0 ); } visible: true stage: Stage { content: [ Rectangle { cursor: cursor x: 10, y: 10 width: 160, height: 140 fill: Color.AQUAMARINE } ] } }
Toolkit の createCustomCursor メソッドの第 2 引数はカーソルがポイントする位置に対するオフセット、第 3 引数がこのカーソルの名前になります。
ちなみに (7, 7) は左上の円の中心になります。