- PR -

イベントを発生させる

1
投稿者投稿内容
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-12-19 11:31
初歩的な質問のようで恥ずかしいのですが、
調べ方が悪いのか検索で出てこなかったのでどなたか御教唆ください。

やりたいことは、コードからイベントを発生させることです。
具体的にはプログラムから
「JTextAreaで PAGE_UP キーが押されたときのイベント」
を発生させたいのです。

よろしくお願いします。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-12-19 13:27
マウスが動かされたとか、キー入力が発生したといったような、低レベルイベントをプログラムから発行させるのはあまり良い設計であるとはいえないので、設計を考え直したほうが良いでしょう。

確認していないですが、イベント発行元でJViewPort#scrollRectToVisible()を呼び出してやるというのはいかがでしょう?

JViewPortのインスタンスはJScrollPaneから取得することができます。
詳細はAPIリファレンスを参照してください。
Shane
大ベテラン
会議室デビュー日: 2003/06/06
投稿数: 132
お住まい・勤務地: Vancouver, BC
投稿日時: 2003-12-19 14:59
かずくんさん、どうもありがとうございます。
Viewport#scrollRectToVisible() を使用して、
以下のようなコードで解決できました。

// 一画面にはみ出ずに表示されている行数
int visibleRows = scrollBar.getVisibleAmount() / textArea.getRowHeight();
// 次の画面の先頭行のHeight
int nextY = visibleRows * textArea.getRowHeight();
// 次の画面のRectangle
Rectangle nextRect = new Rectangle(0, nextY, 0, scrollBar.getVisibleAmount());
// 一画面分スクロール
viewport.scrollRectToVisible(nextRect);
1

スキルアップ/キャリアアップ(JOB@IT)