0

Javaで線を引く必要があります。1 つのポイントをクリックしてから、マウス キーを放し、マウスを動かして (線の終点はマウス カーソルがある場所 (動的プレビュー) にする必要があります)、マウス キーをもう一度クリックして線を作成します。

ここにはさまざまな質問がありますが、ほとんどの場合、マウス ボタンを押したままマウスをドラッグします。

私の質問は、上記の方法を使用して動的に線を引くにはどうすればよいかということです。塗り直しが気になります。以前にコードがあり、マウスを動かすとすべての線が描画されました。プレビューだけを表示する方法はありますか。

4

2 に答える 2

0

MouseEventListenerと の両方を実装するアプリケーションを作成する必要がありますMouseMotionListenerMouseEventListenerメソッドを使用しmouseClickedてマウスがクリックされたかどうかを確認し、続いてMouseMotionListenerメソッドMouseMovedを使用して線のもう一方の端をマウスの位置に更新します。最後に、MouseEventListenerもう一度 を使用して、線の終了位置を特定します。

これが役立つことを願っています。

http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.htmlおよびhttp://docs.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.htmlをご覧ください 。

于 2013-10-21T19:18:50.140 に答える
0

あなたの投稿には多くの情報が欠けているため、正確な解決策を提供することは困難ですが、一般的な考え方は次のとおりです。マウス イベントを受け取り、ライン プレビューを描画する透明な JComponent が必要であると仮定すると、コードは次のようになります。

public class MyLinePreviewComponent extends JComponent {
    Point sourcePoint;
    Point destinationPoint;

    pubic MyLinePreviewComponent() {
        this.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (sourcePoint == null)
                    sourcePoint = e.getPoint();
                else
                    sourcePoint = null;
                repaint();
            }
        });
        this.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseMoved(MouseEvent e) {
                if (sourcePoint != null)
                    targetPoint = e.getPoint();
                repaint();
            }
        });
    }

    public void paintComponent(Graphics g) {
        if (sourcePoint != null && destinationPoint != null) {
            g.setColor(Color.red);
            g.drawLine(sourcePoint.x, sourcePoint.y, destinationPoint.x, destinationPoint.y);
        }
    }
}

このコードは実行していないことに注意してください。

ライン プレビュー機能を既存のコンポーネントに追加する必要がある場合は、ラインをペイントする前に、paintComponent() で通常のコンテンツを再ペイントする必要があります。

于 2013-10-21T19:20:25.450 に答える