私は今、完全に途方に暮れています。私はJavaでGUIを構築することにあまり取り組んでいません.swingとJPanelについてすべて読んでいます.私がやろうとしていることは可能だと思います.
特定の描画領域内に直線を描画できる GUI を構築しようとしています。これらの点を使用して計算を実行するために、開始点/終点の座標を取得できるようにしたいと考えています。どんな助けでも大歓迎です!
私は今、完全に途方に暮れています。私はJavaでGUIを構築することにあまり取り組んでいません.swingとJPanelについてすべて読んでいます.私がやろうとしていることは可能だと思います.
特定の描画領域内に直線を描画できる GUI を構築しようとしています。これらの点を使用して計算を実行するために、開始点/終点の座標を取得できるようにしたいと考えています。どんな助けでも大歓迎です!
コードはお任せしますので、アルゴリズムは次のとおり
です。1.を作成し、JFrame
それに追加JPanel
します。
2.のマウスリスナーを追加します。3 JPanel
。マウスを押すたびに、クリックのxとyを取得します。(開始点)
4。マウスをドラッグしたら、xとyを連続して記録します。
5.マウスを離したら、xとyを記録します。(終了点)
6。クラスのdrawLine()
メソッドを使用するか、この場合の使用には、 -引数は同じままです-開始x、開始y、終了x、および終了yが必要です。Graphics
draw()
Graphics2D
Line2D.Double
カスタム ペイントと2D グラフィックスを実行する から始めます。
基本的に、パネルとのユーザー インタラクションを監視するには、マウス リスナーが必要です。詳細については、マウス リスナーの作成方法を参照してください。
必要に応じて、ユーザーのすべてのクリック ポイントを維持する必要がある場合は、それらを のようなものに保存する必要があります。または、開始点と終了点を知る必要がある場合は、いくつかのオブジェクトList
が必要ですPoint
.
これらを使用してサーフェスにペイントし、必要な計算を実行できます。
このコンテキストでは、ポイントはそれらが生成されたコンテナのコンテキストに依存することに注意してください。つまり、0x0 がコンテナーの左上になります。
更新しました
Line2D
を使用して 2 つの点を表すShape API を利用することもできます。これにより、明確な線/点を区別しやすくなります
これは、「(x1、y1)と(x2、y2)で直線を描く」アプローチよりも難しいです。
Line
動的に作成され、JPanel
リッスンしている上に配置される(カスタム)オブジェクトが必要です。MouseEvent
キャンバス領域はJPanel
それ自体です。また、モデルをビューから分離して、カスタムキャンバスJPanel
がオーバーライドで適切に描画されるようにする必要がありますpaintComponent()
質問は少しあいまいなので、コードを提供することはできません。
JPanelにマウスリスナーを追加する必要があります。
それから:
public void mouseClicked(MouseEvent me){
if(click==1){
int x1=me.getX();
int y1=me.getY();
click=click+1;
}
else{
int x2=me.getX();
int y2=me.getY();
click=1;
}
}
drawLine(x1,y1,x2,y2)
マウスの動きで線を描くには、マウス モーション リスナーを追加することもできます。