私は Java2D チュートリアルを見ていて、マウスを使用して形状を描画してそのサイズを定義する方法を知りたいと思っていました (つまり、形状のサイズは固定されていません)。これに特化したチュートリアルに出くわしたことはなく、たとえば長方形にこれをどのように実装できるか疑問に思っていました。
3 に答える
基本的に、サイズは常に固定されています。を追加すると、次のイベントがキャプチャされる前に、マウスの位置の座標を示すMouseMotionListener
電流に応じたサイズで画面に形状をペイントできます。MouseEvent.getPoint()
paintComponent(Graphics g)
コンポーネントのメソッドをオーバーライドします。repaint()
マウスの位置と形状のサイズを更新するたびにメソッドを呼び出します。
class YourPanel extends JPanel extends MouseMotionListener, MouseListener {
private Rectangle rect = new Rectangle();
public YourPanel () {
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void paintComponent (Graphics g) {
super.paintComponent(g);
g.draw(rect);
}
@Override
public void mouseDragged (MouseEvent me) {
rect.setSize(me.getX() - rect.x, me.getY() - rect.y);
repaint();
}
@Override
public void mousePressed (MouseEvent me) {
rect.setLocation(me.getX(), me.getY());
repaint();
}
// Other methods...
}
クラスにマウス リスナーを実装してから、マウス リスナーの変数を getX および getY で保存して形状を描画する必要があります。
Shapes は、長方形、楕円、ポリラインなどのさまざまな幾何学的図形を表す単語および Java クラスです。
したがって、最初にユーザーはどの形状、たとえばポリラインを決定する必要があります。
次に、マウスの左クリック イベントをキャッチし、クリックごとにマウスの座標を読み取り、その座標ペア (例: java.awt.geom.Point2D()) を に追加しArrayList<Point2D>
ます。このようなリストのサイズは (実質的に) 無制限です。
クリックするたびに、描画される現在の形状のオブジェクトが作成されます。ユーザーがマウスを右クリックすると、形状の準備が整い、形状のリストに保存されます。