Java Drawing DrawTop

Language

JP  US  UK

 

マウス位置モニター

 H. Jyounishi, Tokyo Japan
 

Frame (Index), No frame                 version:0.3(latest)  

要旨:マウスを画面上で動かすたびにマウスが図形にヒットしているかどうかを計算する。 もし図形にヒットしていれば、図形のどこに(選択ボックス、リサイズハンドル、図形境界上、図形内部など)ヒットしているかを計算して返す。 グループ化された図形の場合、 そのIDと図形要素IDの両方を返す。また図形がテキストボックスを持つ場合、マウスがその境界上、内部にあるかを計算して返す。
この機能は、図形の選択図形の移動・リサイズ図形の変形など色々な機能で使われる。 図形が混みいってくると複数の図形にヒットする。この時は使用目的に応じて優先順位をつけて返す。 例えば図形選択に使う場合は、図形の境界上(閉じていない線の場合は線上)にヒットした図形の優先順位を高くして返す。 この機能によって図形が混みいっている場合でも図形の選択を正しく行うことができる。

このページで説明するクラス: MousePositionInfo, ousePositionLS
=> DrawTest: 閉じた図形のマウスヒットテスト, 閉じていない図形のマウスヒットテスト

1.概要
1.1 マウス位置

マウスを画面上で動かすたびに、マウスが図形にヒットしているかどうかを計算する。 ヒットしている場合、図形のどこにヒットしているかをMousePositionInfoオブジェクトで返す。 マウス位置を下表のように分類する。マウス位置コード(int型)はMousePositionInfoで定義している

表1. マウス位置コード

マウス位置コード int値 説明
NO_HIT 0 図形にヒットしていない
INSIDE_DRAWAREA 1 図形の表示エリア内部
SELECTION_BOX 2 選択ボックス上
NW_RESIZE 3 North West Resize Mark
NE_RESIZE 4 North East Resize Mark
SE_RESIZE 5 South East Resize Mark
SW_RESIZE 6 South West Resize Mark
N_RESIZE 7 North Resize Mark
E_RESIZE 8 East Resize Mark
S_RESIZE 9 South Resize Mark
W_RESIZE 10 West Resize Mark
BOUNDINGBOX_BOUNDARY 11 図形を囲む矩形(boundingBox)の境界上
INSIDE_BOUNDINGBOX 12 図形を囲む矩形(boundingBox)の内部
SHAPE_BOUNDARY 13 図形の境界上
END_POINT 14 直線/Polyline/三次曲線の始終点
CONTROL_POINT 15 制御点上。(EDIT_MODEのとき始終点も制御点と見なす)
INSIDE_SHAPE 16 図形内部
TEXTBOX_BOUNDARY 17 TextBoxの境界上
INSIDE_TEXTBOX 18 TextBox内部
INSIDE_TEXT 19 テキストが表示されている矩形領域


図1.1 選択ボックス, リサイズハンドル

図1.2 縮小表示 選択ボックスの線幅、リサイズハンドルのマークサイズは表示倍率によらない。

図 1.3 DRAWAREA (薄緑色の領域)
DRAWAREAは1つの図形を描くための最大の領域で選択ボックス、リサイズハンドル、接線方向など全て内部に含む。

図 1.4 制御点, 曲線の始終点
折れ線、三次曲線の節点、接線方向を示す線の端点は制御点

1.2 図形のヒットテスト
ラフなチェックは図形を囲むボックスを作成して、マウス位置がボックス内にあるか否かをチェックする。
より詳細なチェックは次のように行う。

図形 説明
閉図形 SHAPE_BOUNDARY, INSIDE_SHAPEの判定
java.awt.Shapeインターフェイスが定義しているcontainsメソッドを使えば、簡単に判定できる。
例えばマウス位置の周りにテスト点を4点作成し、4点が全て閉図形内部にあるときはマウスはその図形の内部にあると判定し、 4点が内部にある点と外部にある点に分かれる場合は、境界上にあると判定する、など。

マウス位置とテスト点

閉図形の内側 境界上 閉図形の外側
See: 関連メソッド=>MousePositionLS.createMousePositionOfShape, MousePositionLS.ptOnShape
• ユニットテスト=>閉じた図形のマウスヒットテスト
直線、折れ線、曲線 SHAPE_BOUNDARYの判定
直線、折れ線、曲線の近傍にあるか否かはcontainsメソッドでは判定できない。
マウス位置から直線/折れ線/曲線への最短距離を計算して判定する。 現在はパラメトリック曲線の計算ライブラリ(Curve2DUtil)の getShortestLineメソッドを使っている。
このメソッドは曲線が三次曲線の場合、収束計算を行うので処理が重たくなるのだが、いまのところレスポンスが遅くなることも無いのでそのまま使っている。
See: 関連メソッド=>MousePositionLS.createMousePositionOfShape, MousePositionLS.ptOnShape
• ユニットテスト=>閉じていない図形のマウスヒットテスト
テキスト領域 INSIDE_TEXTの判定
テキストが表示されている行の矩形領域はLineBreaker.getBoundsメソッドで与えられる。 TextBox.getTextLayoutAreaメソッドで行の矩形領域を全て覆う矩形領域を計算して返す。
See:関連メソッド=> MousePositionLS.ptOnBox
矩形(ボックス) SELECTION_BOX, BOUNDINGBOX_BOUNDARY,INSIDE_BOUNDINGBOX etcの判定
これは簡単なプログラムで実現できる。
See:関連メソッド=> MousePositionLS.ptOnBox
点、小さな矩形 NW_RESIZE - W_RESIZE, END_POINT, CONTROL_POINT etc.の判定
マウスがリサイズハンドル、図形の制御点などの上にあるかをチェックする。
これは簡単なプログラムで実現できる。
: 関連メソッド=> MousePositionLS.onResizeMark, MousePositionLS.onPoint


2. MousePositionInfoクラス 戻る=>page top
public class MousePositionInfo implements Serializable
ヒットした図形に関するマウス位置情報を表すクラス。MousePositionLSで作成され管理される。
>フィールド 説明
container ShapeContainer container=null
マウス位置が図形にヒットしたときに、図形のShapeContainerを登録する。
ShapeContainerはグループ図形であっても良い。
shapeContainerInGroup
ShapeContainer shapeContainerInGroup=null
マウスがグループに属する図形の境界上/内部にある場合、その図形のShapeContainerを登録する。
フィールド変数containerがグループ図形でないときは、 shapeContainerInGroup=containerと設定する。
textBox TextBox textBox=null
∙ 図形のText Box境界上または内部にある場合、そのText Boxを登録する。
グループに含まれるText Boxもチェックする。 このフィールドを使いグループに属する図形のText Boxの編集を可能としている。
mouseStatus String mouseStatus=""
"mousePressed", "mouseClicked"などを設定する。
rightButtonPressed boolean rightButtonPressed=false
MousePositionLS.mousePressedで設定
∙ このフィールド変数はSelectionLS.mouseClickedで参照する。

すでに選択済みの図形をクリックすると選択解除にするのが、SelectionLSで定めている選択の 一般規則。 この規則では図形を右クリックしてポップアップメニューを表示する場合、 その図形は選択解除されてしまう。この問題を解決するためにこのフィールドを使う。
すなわち SelectionLS.execSelection選択図形を右クリックしても選択解除にはしない。 これにより操作性を損なわず、ポップアップメニューを表示できる。

position int position=0
∙ 表1のマウス位置コードを格納する。
point Point2D point=null
マウスの現在位置を格納する。
information String information
補助情報
NO_HIT (static) public static final int NO_HIT=0;
=> mouse position code
INSIDE_DRAWAREA
(static)
public static final int INSIDE_DRAWAREA=1;
SELECTION_BOX
(static)
public static final int SELECTION_BOX=2;
NW_RESIZE (static) public static final int NW_RESIZE=3;
NE_RESIZE (static) public static final int NE_RESIZE=4;
SE_RESIZE (static) public static final int SE_RESIZE=5;
SW_RESIZE (static) public static final int SW_RESIZE=6;
N_RESIZE (static) public static final int N_RESIZE=7;
E_RESIZE (static) public static final int E_RESIZE=8;
S_RESIZE (static) public static final int S_RESIZE=9;
W_RESIZE (static) public static final int W_RESIZE=10;
BOUNDINGBOX_BOUNDARY (static) public static final int BOUNDINGBOX_BOUNDARY=11;
INSIDE_BOUNDINGBOX
(static)
public static final int INSIDE_BOUNDINGBOX=12;
SHAPE_BOUNDARY
(static)
public static final int SHAPE_BOUNDARY=13;
END_POINT (static) public static final int END_POINT=14;
CONTROL_POINT
(static)
public static final int CONTROL_POINT=15;
INSIDE_SHAPE (static) public static final int INSIDE_SHAPE=16;
TEXTBOX_BOUNDARY
(static)
public static final int TEXTBOX_BOUNDARY=17;
INSIDE_TEXTBOX
(static)
public static final int INSIDE_TEXTBOX=18;
INSIDE_TEXT (static) public static final int INSIDE_TEXT=19;
=> mouse position code
positionString
(static)
public final static String[] positionString=new String[20];
マウス位置コードの文字列表現を格納。


>メソッド 説明
コンストラクター public MousePositionInfo()
setPositionStringメソッドでマウス位置コード(整数)の文字表現を設定する。
setContainer public void setContainer(ShapeContainer container)
フィールド変数containerへ引数を設定する。
setShapeContainerInGroup public void setShapeContainerInGroup(ShapeContainer shapeContainerInGroup)
フィールド変数shapeContainerInGroupへ引数を設定する。
setTextBox public void setTextBox(TextBox textBox)
フィールド変数textBoxへ引数を設定する。
setMouseStatus public void setMouseStatus(String mouseStatus){
フィールド変数mouseStatusへ引数を設定する。
setRightButtonPressed public void setRightButtonPressed(boolean pressed)
フィールド変数rightButtonPressedへ引数を設定する。
setPosition public void setPosition(int position)
フィールド変数positionへ引数を設定する。
setPoint public void setPoint(Point2D point)
フィールド変数pointへ引数を設定する。
setInformation public void setInformation(String inf)
フィールド変数informationへ引数を設定する
getContainer public ShapeContainer getContainer()
フィールド変数containerを返す。
getShapeContainerInGroup public ShapeContainer getShapeContainerInGroup()
フィールド変数shapeContainerInGroupを返す。
getTextBox public TextBox getTextBox()
フィールド変数textBoxを返す。
getMouseStatus public String getMouseStatus()
フィールド変数mouseStatusを返す。
isRightButtonPressed public boolean isRightButtonPressed()
フィールド変数rightButtonPressedを返す。
getPosition public int getPosition()
フィールド変数positionを返す。
getPoint public Point2D getPoint()
フィールド変数pointを返す。
getInformation public String getInformation()
フィールド変数informationを返す。
onResizeMark public boolean onResizeMark()
マウス位置がリサイズハンドル上にあるか否かを返す。
onEndPoint public boolean onEndPoint()
マウス位置が直線、折れ線、曲線の端点上にあるときtrueを返す。
onControlPoint public boolean onControlPoint()
マウス位置が直線、折れ線、曲線の制御点上にあるときtrueを返す。
clone public Object clone()
このオブジェクトの複製を返す。
toString public String toString()
このオブジェクトの文字列表現を返す。
setPositionString private void setPositionString()
マウス位置コード(position)の文字表現を設定する。
getPositionString
(static)
public static String getPositionString(int position)
マウス位置コード(position)の文字表現を返す。
getPositionStringInDetail
(static)
public static String getPositionStringInDetail(int position)
マウス位置コード(position)の詳しい文字表現を返す。


3. MousePositionLSクラス 戻る=>page top
3.1 マウス位置情報の取得
MousePositionLSはマウスが動くたびに、図形にヒットしているか否かを計算し、 ヒットしていればマウス位置情報(MousePositionInfo)を作成する。
See=> マウス位置コード
マウスの動きを検出するのはMouseMotionListenerが定義しているmouseMovedメソッドと mouseDraggedメソッドである。 この両メソッドでこのクラスのthis.createMousePositionInfo を呼んでヒットチェックを行う。

3.2 関連機能
MousePositionLSはマウス位置情報(MousePositionInfo)を作成する事が主要な役割であるが、次の役割も果たす。

(1)ポップアップメニューを起動する
∙ このクラスのmouseClickedメソッドか図形選択のクラスのmouseClickedメソッドが ポップアップメニューを起動し、ExecPopupMenuオブジェクトを呼び出す。

(2) MousePositionInfoを画面に表示する
∙ このクラスのmouseDragged, mouseMovedからdisplayMousePosition メソッドを呼び出して表示する。
表示画面の下にあるメッセージパネルにマウスの現在位置を表示する。 複数の図形にヒットした場合、複数のマウス位置情報を表示する。



3.2 画面下のメッセージパネルへのマウス位置情報表示


(3)マウスカーソルの形を変える
∙ mouseMovedで実行。Cursor.DEFAULT_CURSOR, Cursor.MOVE_CURSOR, NW_RESIZE_CURSORなど。

3.3 特記事項
MousePositionLSはマウス位置情報(MousePositionInfo)を作成し、要求に応じて返す。 MousePositionInfoオブジェクトをマウスが動くたびに新規作成するのは不経済なので、 予めオブジェクトを作成しておき、それにデータを設定するようにする。このため少し分かり難い処理になっている。
項目 説明
用意するMousePositionInfoオブジェクト
これは1個では足りない。図形が込み入ってくると、複数の図形にヒットする可能性があるので複数個用意する。 この数はフィールド変数maxInfosに設定する。用意するオブジェクトの配列は infos。なおinfosオブジェクトの作成はMousePositionLSのコンストラクタで行う。
マウスが動いたときに作成されるMousePositionInfoの数 フィールド変数infoCountに設定する。
MousePositionInfoへの設定メソッド 予め用意されているオブジェクトにデータを設定するメソッドはsetMousePosition
MousePositionInfoの取り出しメソッド これはケースに応じて幾つか用意してある。
this.getMousePositionInfoForSelection: 図形選択のためのMousePositionInfo。
this.getMousePositionInfoForMoveResize: 図形の移動・リサイズのためのMousePositionInfo。
this.getAllMousePositionInfo: 全MousePositionInfo。


3.4 API 戻る=>page top
public class MousePositionLS implements MouseListener, MouseMotionListener
フィールド 説明
popupTrigger
public static boolean popupTrigger
∙ SelectionLSのpopupTriggerフィールドと役割は同じ
See=> SelectionLS, ポップアップメニューの起動
clicked boolean clicked
mouseEventCompletedメソッドで参照される。
一回のマウスクリックに対し、mousePressed -> mouseReleased -> mouseClickedが全て呼ばれたかどうかを記録する。
mousePressedでfalseをセット、mouseClickedでtrueをセットする。
clickedPoint public Point2D clickedPoint=null
クリック点の位置を記録する。
infoCount private int infoCount
マウスが動いたときに作成されるMousePositionInfoの数。ヒットした図形数のこと。
maxInfos private int maxInfos
予め用意しているMousePositionInfoオブジェクトの数。
infos MousePositionInfo[] infos=new MousePositionInfo[maxInfos]
予め用意しているMousePositionInfoオブジェクトの配列。
See=> 特記事項

メソッド 説明
コンストラクタ public MousePositionLS()
∙ activateListenerを呼んでMousePositionLSをListenerPanelに登録。
∙ フィールド変数infosのオブジェクト作成。
activateListener
private void activateListener(boolean activate)
∙ activate=trueならば、MousePositionLSをListenerPanelに登録。
 => マウス位置をモニターを動作させる。
∙ activate=falseならばこのオブジェクトをListenerPanelから削除。
=>マウスの位置をモニターの動作を停止する。
isMouseListener private boolean isMouseListener()
∙ このオブジェクトがListenerPanelに登録されているかを問い合わせる
isMouseMotionListener private boolean isMouseMotionListener()
∙ このオブジェクトがListenerPanelに登録されているかを問い合わせる。
mousePressed public void mousePressed(MouseEvent e)
∙ popupTriggerのチェックを行う(e.isPopupTrigger())。
∙ マウスの右ボタンが押された場合、その時点で記録されているMousePositionInfoに右ボタンプレスの設定を行う。
See=> MousePositionInfo.rightButtonPressed
∙ 現在のマウス位置情報を画面の下のメッセージパネルに表示する。
mouseDragged public void mouseDragged(MouseEvent e)
∙ getMousePositionInfoメソッドを呼び出してマウスにの位置情報(MousePositionInfo)を取得する。
∙ 現在のマウス位置情報を画面の下のメッセージパネルに表示する。
mouseReleased public void mouseReleased(MouseEvent e)
∙ popupTriggerのチェックを行う。
(注)popupTriggerはmousePressedとmouseReleasedの両方でチェックする必要がある。
See=> SelectionLS PopupTriggerの取得
∙ 現在のマウス位置情報を画面の下のメッセージパネルに表示する。
mouseClicked
public void mouseClicked(MouseEvent e)
∙ 現在のマウス位置情報を画面の下のメッセージパネルに表示する。
∙ ポップアップメニューの起動をチェックし、起動する場合にはexecPopupMenu.show(e)でポップアップメニューを表示する。 SelectionLS.mouseClickedにも同じロジックが組み込まれている。
See=> ポップアップメニューの起動
mouseMoved public void mouseMoved(MouseEvent e)
this.createMousePositionInfoメソッドを 呼び出してマウスにの位置情報(MousePositionInfo)を取得する。
∙ displayMousePositionメソッドで現在のマウス位置情報を画面の下のメッセージパネルに表示する。
∙ マウスのカーソルの形を変更する。
カーソルオブジェクトはDrawParametersクラスから取り出す。
getMousePositionInfoForSelectionメソッドでマウス位置情報を選び、カーソルの形をセットする。
mouseEntered public void mouseEntered(MouseEvent e)
デフォールトカーソルをセットする。
mouseExited
public void mouseExited(MouseEvent e)
デフォールトカーソルをセットする。
displayMousePosition
private void displayMousePosition(String mouseAction, double X, double Y)
∙ マウス位置情報を画面下部のメッセージパネルに表示する。
図形にヒットしたマウス位置情報は複数作られている場合、 このクラスのgetMousePositionInfoForSelectionでマウス位置情報を選択する。
getMousePositionInfo
For
Selection
public MousePositionInfo[] getMousePositionInfoForSelection()
図形選択に使えるマウス位置情報を選択し、複数ある場合には優先順位をつけて返す。
優先順位のランクは次。
∙ MousePositionInfo.NW_RESIZE - W_RESIZE, END_POINT, CONTROL_POINT
∙ MousePositionInfo.SELECTION_BOX.
∙ MousePositionInfo.INSIDE_TEXT.
∙ MousePositionInfo.SHAPE_BOUNDARY
∙ MousePositionInfo.TEXTBOX_BOUNDARY.
∙ MousePositionInfo.SELECTION_BOX
∙ MousePositionInfo.INSIDE_TEXTBOX
∙ MousePositionInfo.INSIDE_SHAPE
∙ MousePositionInfo.BOUNDINGBOX_BOUNDARY, INSIDE_BOUNDINGBOX
: もしも同じランクのマウス位置情報が複数存在する場合、 例えばMousePositionInfo.INSIDE_SHAPEなど、手前にある図形 (z- order: 操作説明書)を持つマウス位置情報に高いランクを設定する。
getMousePositionInfoForMoveResize public MousePositionInfo getMousePositionInfoForMoveResize()
選択図形 にヒットしているマウス位置情報から優先順位の一番高いものを一個だけ返す。
優先順位のランク
∙ MousePositionInfo.NW_RESIZE - W_RESIZE, END_POINT
∙ MousePositionInfo.TEXTBOX_BOUNDARY.
∙ MousePositionInfo.SHAPE_BOUNDARY
∙ MousePositionInfo.SELECTION_BOX
∙ MousePositionInfo.INSIDE_SHAPE
: もしも同じランクのマウス位置情報が複数存在する場合、例えばMousePositionInfo.INSIDE_SHAPEなど、 手前にある図形(z- order: 操作説明書)を持つマウス位置情報に高いランクを設定する。
getAllMousePositionInfo
public MousePositionInfo[] getAllMousePositionInfo()
図形にヒットした全てのマウス位置情報を返す。
mouseEventCompleted
public boolean mouseEventCompleted()
allEventsCompletedの補助メソッド
マウスクリックに対しmousePressed, mouseReleased, mouseClickedの一連の処理を終了したときにtrueを返す。マウスクリックするとmousePressed ->mouseReleased -> mouseClickedの順に呼ばれるので、mousePressedでfalseセット、mouseClickedでtrueをセットする。
このメソッドは他のマウスリスナー(SelectionLS)にもインプリメントされている。
allMouseEventCompleted
public boolean allEventsCompleted()
PopupMenuの起動に使う。詳細=>ポップアップメニューの起動
現在動作中の全てのマウスリスナーがmouseClickedまで処理を完了したかどうかを問い合わせる。
このメソッドはSelectionLSにもインプリメントされている。 ポップアップメニューはこのクラスかSelectionLSから起動される。
createMousePositionInfo
private void createMousePositionInfo(double X, double Y)
∙ マウス位置情報計算のメインメソッド。
∙ 対象図形がグループ図形 ならば下のcreateMousePositionOfGroupを呼んで計算。
グループ図形 でなければ下のcreateMousePositionOfShapeをコール。
createMousePosition
OfShape
private void createMousePositionOfShape(double X, double Y, ShapeContainer shapeContainer)
グループでない図形に対しマウスが図形のどの位置にあるかを判定する。
createMousePosition
OfGroup
private void createMousePositionOfGroup(double X, double Y, ShapeContainer shapeContainer)
グループ図形に対するマウスの位置情報を計算する。 このメソッドではMousePositionInfo.BOUNDINGBOX_BOUNDARY, MousePositionInfo.SELECTION_BOX とリサイズマーク上にあるか否かだけテストする。 さらに詳細なテストは次のcreateMousePositionOfShapeInGroupで行う。
createMousePosition
OfShapeInGroup
private void createMousePositionOfShapeInGroup(double X, double Y, ShapeContainer groupContainer, ShapeContainer shapeContainer)
Parameters:
(X, Y) - マウス位置。
groupContainer - グループ図形のShapeContainer.
shapeContainer - groupContainerに含まれるShapeContainer。
Processing:
このメソッドではMousePositionInfo.TEXTBOX_BOUNDARY と MousePositionInfo.INSIDE_TEXT をテストする。
ptOnShape
private int ptOnShape(double X, double Y, ShapeContainer shapeContainer)
shapeContainerにグループ図形を指定するのは不可。
(X,Y)がshapeContainerの境界上/内部にあるか否かをチェックする。
∙ 閉図形ではない場合

Curve2DUtil.getShortestLineで(X,Y)から輪郭線の最短点を求める。
(X,Y)と最短点の距離がトレランス(注)以下の場合、境界上(SHAPE_BOUNDARY)にあると判定。

∙ 閉図形の場合

(X,Y)の南北東西にトレランスの距離だけ離れた4点を作り、この4点が閉図形内部にあるか否かで決定する。

4点とも内部にある場合INSIDE_SHAPE、少なくとも1点が内部にある場合SHAPE_BOUNDARYを返す。

戻り値: 0/ SHAPE_BOUNDARY/INSIDE_SHAPE
(注)トレランスはリサイズマークサイズの1/2*(1/scale)。scaleは表示倍率。
See=> 図形のヒットテスト
ptOnBox
private int ptOnBox(double X, double Y, Rectangle2D box)
引数:
(X, Y) - 現在のマウス位置
box - Rectangle2Dオブジェクト
戻り値: 0/ BOUNDINGBOX_BOUNDARY/INSIDE_BOUNDINGBOX
処理:
(X,Y)が矩形境界上/内部にあるか否かをチェックする。
矩形境界上のあるか否かの判定方法はptOnShapeメソッドの閉図形の場合と同じ。
ptInfOnBox private String ptInfOnBox(double X, double Y, Rectangle2D box)
このメソッドは createMousePositionOfShape, createMousePositionOfShapeInGroupから呼ばれる。 現在のところ. TEXTBOX_BOUNDARYの場合の補助情報をセットするために使われ、 TextBox.mouseDragged メソッドで参照される。
引数:
(X, Y) - 現在のマウス位置
box - Rectangle2Dオブジェクト
戻り値:
"outside"/"inside"/"top"/"bottom"/"left"/"right"のいずれかを返す。
処理:
ptOnBox メソッドと同様。
onPoint
private int onPoint(double X, double Y, Point2D[] points)
(X,Y)点があるトレランスで点に一致するか否かをチェックする。
戻り値: (X,Y)がどれかの点と一致する場合そのindex番号を返す、一致しない場合-1を返す。
onResizeMark
private int onResizeMark(double X, double Y, Rectangle2D rectangle)
あるトレランスでリサイズハンドル上にあるか否かを判定する。
戻り値: マーク上にない場合0、マーク上にある場合、次の値のどれかが返される。
NW_RESIZE, NE_RESIZE, SE_RESIZE, SW_RESIZE, N_RESIZE, E_RESIZE, S_RESIZE, W_RESIZE
boxContains
private boolean boxContains(double X, double Y, double delta, double boxX, double boxY)
(boxX, boxY)を中心とし辺の長さが2*deltaのBox内に(X,Y)があるか否かをチェックする。
戻り値: ない場合false、ある場合はtrueを返す。
setMousePosition <private void setMousePosition(ContainerIF container, ShapeContainer shapeContainerInGroup, TextBox textBox, int position, Point2D point, String inf)
あらかじめ確保してあるMousePositionInfoの配列にマウス位置情報をセットする。
See=> 特記事項




Copyright (c) 2009-2013
All other trademarks are property of their respective owners.