疲れましたが、これで終わりです。いや、もうちょっとだけ続いたんじゃよ
まぁ、実装の仕方に関してはこれで終わりです。
PKindEventを処理する
PKindはPButtonEventの処理でちょろっとお話ししましたが、ポインターを操作するデバイスを表しています。
これのイベントが発生する………すなわち、ポインターを操作するデバイスが変わったときに起こります。
ペン先から消しゴムに変えたり、マウスに持ち替えたりといった時に発生するというわけですね。
なので、することは「このデバイスに変わったよ〜」ということを知らせれば良いだけです。デバイスは今まで通りPKindから取得します。PKindはPenから取得するも良し、PKindEventが持ってるkindから取得するも良し!好きにやれい!
簡単だね。
PScrolleventを処理する
その名の通りスクロールイベントです。私は単純にMouseWheelEventにコンバートして使っています。
説明するより、プログラム見た方が早そうなので載せておきます。
public void penScrollEvent(PScrollEvent e) { int val = e.scroll.value; if(val==0)return; int rotation =e.scroll.getType()==PScroll.Type.DOWN? 1:-1; Pen pen = e.pen; int x = (int) pen.getLevelValue(PLevel.Type.X);//x取得 int y = (int) pen.getLevelValue(PLevel.Type.Y);//y取得 MouseWheelEvent mwe=new MouseWheelEvent(component, MouseEvent.MOUSE_WHEEL, e.getTime(), keymodify, x, y, pen.getPressedButtonsCount(), false, 0, val, rotation);
componentは最初から自分で所持しています。
ま〜、説明もこれくらいで良いでしょう。
penTockメソッドについて
タブレットデバイスから発生するPLevelEventはシステムのマウスイベントに比べてその発生間隔が短い。
場合によっては処理しきれないこともあるでしょう。
penTockメソッドはPLevelEventが発生する度に、その発生間隔を通知してくれます。
この渡される値をうまく使って、処理しきれない場合はうまいこと処理をスルーしてね、というだけのメソッドです。
必要なければ特に何か実装する必要はありません。
私が作っているJPenを簡単に扱うためのライブラリーをGitHubにおいておきました。
PenTablet
ついでにJTablet2にも対応しようとして中途半端に放置しています。