asaのブログ

プログラミングの勉強まとめ

JOGLでマウスイベントの処理

 JOGLでマウスイベントを受け取り、イベント発生時の座標から直線をひくSwingアプリケーションを作りました。

 参考文献:JOGLによるOpenGL入門

 

 ペイントツールはマウス等で受け取った座標をもとに線を引くなり、円を連続して描くなりして描画をしています。しかし単純な線だけではなくもっと凝った線を描く必要があります。そこでグラフィックス機能が豊富なOpenGLを使用して描画を行っています。

 

 今回は単純にマウスがクリックされた際の座標を保存し、その点を線でつないぐSwingです。”JOGLによるOpenGL”にはNewtで記載されていましたが、JavaFXに埋め込むためにSwingで実装しました。

 

 マウスイベントの処理

 大体の流れは下のメモのとおりです。

f:id:asa_r:20170526200248p:plain

f:id:asa_r:20170526200345p:plain

という具合でCanvasに対してMouseAdapterをつけてやります。addMouseListenerメソッドを使ってCanvasコンポーネントに対してMouseAdapterをextendsしたmylistenerを渡しています。

 

 コード

gist0097ac041236ed0a6f9734f99d16b812

 

 こんな感じで直線がひけます。

f:id:asa_r:20170526201752p:plain

 

 課題

  • 線がガタガタしているのでアンチエイリアスを実装
  • アンドゥ機能をボタンとCommandPetternで実装
  • 線の色を変えられるよう実装
  • 線の種類を変えられるよう実装

で今後もやっていきます。