2

私は今、完全に途方に暮れています。私はJavaでGUIを構築することにあまり取り組んでいません.swingとJPanelについてすべて読んでいます.私がやろうとしていることは可能だと思います.

特定の描画領域内に直線を描画できる GUI を構築しようとしています。これらの点を使用して計算を実行するために、開始点/終点の座標を取得できるようにしたいと考えています。どんな助けでも大歓迎です!

4

4 に答える 4

11

コードはお任せしますので、アルゴリズムは次のとおり
です。1.を作成し、JFrameそれに追加JPanelします。
2.のマウスリスナーを追加します。3 JPanel
。マウスを押すたびに、クリックのxとyを取得します。(開始点)
4。マウスをドラッグしたら、xとyを連続して記録します。
5.マウスを離したら、xとyを記録します。(終了点)
6。クラスのdrawLine()メソッドを使用するか、この場合の使用には、 -引数は同じままです-開始x、開始y、終了x、および終了yが必要です。Graphicsdraw()Graphics2DLine2D.Double



これは、lilをもう少しよく説明するための画像です。 ここに画像の説明を入力してください

于 2013-02-17T07:21:32.867 に答える
3

カスタム ペイント2D グラフィックスを実行する から始めます。

基本的に、パネルとのユーザー インタラクションを監視するには、マウス リスナーが必要です。詳細については、マウス リスナーの作成方法を参照してください。

必要に応じて、ユーザーのすべてのクリック ポイントを維持する必要がある場合は、それらを のようなものに保存する必要があります。または、開始点と終了点を知る必要がある場合は、いくつかのオブジェクトListが必要ですPoint.

これらを使用してサーフェスにペイントし、必要な計算を実行できます。

このコンテキストでは、ポイントはそれらが生成されたコンテナのコンテキストに依存することに注意してください。つまり、0x0 がコンテナーの左上になります。

更新しました

Line2Dを使用して 2 つの点を表すShape API を利用することもできます。これにより、明確な線/点を区別しやすくなります

于 2013-02-17T07:06:06.803 に答える
1

これは、「(x1、y1)と(x2、y2)で直線を描く」アプローチよりも難しいです。

Line動的に作成され、JPanelリッスンしている上に配置される(カスタム)オブジェクトが必要です。MouseEventキャンバス領域はJPanelそれ自体です。また、モデルをビューから分離して、カスタムキャンバスJPanelがオーバーライドで適切に描画されるようにする必要がありますpaintComponent()

質問は少しあいまいなので、コードを提供することはできません。

于 2013-02-17T07:03:56.277 に答える
1

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)

マウスの動きで線を描くには、マウス モーション リスナーを追加することもできます。

于 2013-02-17T07:07:23.940 に答える