ブックマーク / gaobin.hatenablog.com (3)

  • キーの入力を検知するには onKeyTyped を使う - とにかく書く

    画像ビューアーの制御をショートカットキーで実現しようと、Scene のインスタンスに onKeyPressed を使っていた。 順調に進んでいたけど、"+" で拡大処理を実装したところ、"+" だけ何も表示が変わらない。"-" は正しく縮小処理がされるのに…。 原因は、日語キーボードでは "+" は "Shift + ; " で、onKeyPressed では "Shift" キーでイベント処理、 ";" キーで次のイベント処理になっていた。 KeyEvent (JavaFX 8) によると、onKeyTyped を使う必要がある。 以下のコードで、キーを押したときにそれぞれ何が呼び出されるかを調べることができる。 onKeyTyped を使うときは、getCharacter メソッドで入力された文字を文字列として解釈する必要がある。 逆に、shift や insert キーなど文字列に

    キーの入力を検知するには onKeyTyped を使う - とにかく書く
  • 画像を拡大縮小し、ウィンドウサイズも合わせる - とにかく書く

    Javaで画像を拡大したり縮小したりして、同時にウィンドウサイズも変換後の画像サイズに合わせる。 JavaFX の ImageView クラスにある拡大縮小機能を使用した。 tiff 画像も読み込みたいので、昔ながらの ImageIO.read メソッドを使用した。 JavaFX の Image クラスは tiff をサポートしていなかった。 ポイントは、imageView クラスの setFitWidth / setFitHeight メソッドを使用しているところ。 setScaleX / setScaleY メソッドを使って拡大縮小すると、描画幅は変わらないため、縮小時は画像の外周が白くなった。 package application; import javafx.application.Application; import javafx.stage.Stage; import ja

    画像を拡大縮小し、ウィンドウサイズも合わせる - とにかく書く
  • イベントを捕捉して処理する - とにかく書く

    画像ビューアーで、Ctrl を押しながらマウスホイールを回すと拡大縮小する機能を追加したいと思った。 ところが、マウスホイールを回すと ScrollPane もスクロールされてしまった。 結局、addEventFilter メソッドで指定するイベントハンドラにて、event.consume(); を実行していなかったからだった。 解決に思いの外時間を要したため記録しておく。 マウスホイールイベントを奪取する例は以下。 package application; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import javafx.application.Application; import javafx.embed.swing.SwingFXUtils; i

    イベントを捕捉して処理する - とにかく書く
  • 1