1

ここの以前の投稿に続いて、コードを次のように変更しました。

PolygonnerJframe.java

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JPanel;


/**
 * 
 * @author X2
 *
 */
public class PolygonnerJframe
{
    public static void main (String[] args)
    {
     JFrame frame = new JFrame("Draw polygons");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setContentPane(new DrawingPanel());
     frame.pack();
     frame.setVisible(true);
 }
}

さて、このコードは次のようになります:これ

そして、何が原因なのか理解できません。

私が行った変更は次のとおりです。ポリゴンの処理が完了すると、その座標がクラスのarrayListに保存され、Polygon新しいポリゴンを作成するたびに、以前のポリゴンを取得して描画します。新しいポリゴン。

上に見られるように、図面に何か問題があり、問題を見つけることができないようです。

助けていただければ幸いです。

ありがとう

編集:

@StanislavL の発言を考慮した後、これらの行を に移動しましmouseClicked()たが、今回は「古い」ポリゴンなしで新しいポリゴンが作成されるたびに新しい画面が表示されます。

ただ新しいポリゴン...古いものなし

ここに画像の説明を入力

4

2 に答える 2

2

@Stasコードは、アドオン(IDEで追加された基本的なものを追加)なしで機能します。最終結果は???になる可能性があるという意味ですか?

ここに画像の説明を入力

.

編集

.

汚いハックは、super.paintComponent(g); を無効にしますが、適切な方法は

  • すべてのオブジェクトを配列に追加します (@ Trashgod による非常に明確なコメントを参照)

  • BurreferImage を背景画像として作成します (マウスの Double_Click 後)

super.paintComponent(g); を無効にして出力します。

ここに画像の説明を入力

于 2013-03-27T11:04:35.047 に答える
2

呼び出しごとpublic void paintComponent(Graphics g)に新しいポリゴンを作成し、それをポリゴン リストに追加します。

        Polygon poly = new Polygon(this.edges);

        // add the polygon to the polygons array 
        this.polygons.add(poly);

たとえば、mouseClicked()処理中に1つだけ発生するはずだと思います

于 2013-03-27T11:02:47.780 に答える