※ ChatGPTを利用し、要約された質問です(原文:JLabelとJLabelを結ぶ直線をJComponentとしてカプセル化)
JLabelとJLabelを結ぶ直線をJComponentとしてカプセル化する方法
このQ&Aのポイント
JPanel上のJComponentを繋ぐ直線を表すクラスを作成する方法について教えてください。
線をオブジェクトとしてカプセル化するための効果的な方法はありますか?
ピュアJavaのライブラリでこの機能を実装するためのヒントを教えてください。
JLabelとJLabelを結ぶ直線をJComponentとしてカプセル化
別にJLabelでなくてもよいのですが、JPanel上のJComponentを繋ぐ直線を表すクラスをJComponentを継承したクラスとして扱いたいのですが、どのようにすればよいでしょうか?
というのもやりたいことは、JPanel上のJComponentを移動させたときにそれを繋ぐ線も動くとともに、その線上で発生するイベント(たとえばMouseEvent)を処理したいからです。
現段階ではJPanelに直に線を描画し、JPanelと同じ大きさのオフスクリーンに各線の識別IDを色とした線を描画することで、カーソルの位置から当たり判定をするという荒い方法で対処しています。
なんとかこの線をオブジェクととしてカプセル化したいのですが、なにかよい方法はないでしょうか?
ピュアJavaで実装したいため、SWT+EMF(+Draw2D)は考えていません。
またそのようなピュアJavaのライブラリがあれば教えてください。
お礼
> いかにも面倒で処理が重そうに感じるという意味での疑問でしょうか? おっしゃる通り、リスナの全てのメソッド実装部で、forループを回すのが面倒だな~と感じたのと、追加する部品が増えると重くなるのでは、と感じたためです。 心配することでもないようなので、気にしないようにします。 > containsを使って、思い通りに判定できていれば問題ありませんが。 直線の判定はうまくいかなかったので、おっしゃる通りintersectsで判定するようにしました。 あとは、mouseEnteredやmouseExitedをどうエミュレートしようか迷っているところですが、教えていただいた方法も無事理解でき、実装できたので今回はここまでにしたいと思います。 大変助かりました。 ご回答ありがとうございました。