このエントリは、JavaFX Advent Calendar 2017の22日目です。昨日は@sk44_さんの「業務で JavaFX をちょっとだけ使ってみた」でした。
前回の私のエントリを公開した後、青江 (@aoetk) さんからアドバイスをいただきました。
@yumix_h Advent Calendarのこの記事を拝見しましたが、HTMLEditorSkinはJava9から公開APIに移っていて、その
— AOE Takashi (@aoetk) 2017年12月15日
performCommand()メソッドを使うことで編集処理を外から呼び出せるようになっていますよ。 https://t.co/jUeut58oWN
よし、これでいける!
早速Cutメニューのハンドラを作ってみたのですが、なぜか動かない。こういう時はまずドキュメントを見よう、ということでjavafx.scene.skin.HTMLEditorSkinの項目を見てみます(それにしてもJDK 9のAPIドキュメントは使い勝手が微妙…)。
Special-case handling for certain commands. Over time this may be extended to handle additional commands. The current list of supported commands is:
- BOLD
- ITALIC
- UNDERLINE
現時点でサポートされているのはBOLD、ITALIC、UNDERLINEだけ、とはっきり書いてありますね。
JavaFX 9では標準コントロールのSkinが公開されたため、コントロールの見栄えを(CSSでできる以上に)カスタマイズできるようになりました。HTMLEditorのスキンであるHTMLEditorSkinもその1つ。ただし、現時点でHTMLEditorSkinにできることは、
- レイアウトの微調整
- BOLD、ITALIC、UNDERLINEボタンの制御
だけでした。ほかのボタンの制御も早くサポートされるといいな。
ここで終わるのも悔しい(&12/24に書くことがなくなる)ので、HTMLEditorSkinの内部にリフレクションAPIでアクセスして、どうにかできないものか試してみます。