1

この方法を使用paintComponentして、パネルに図形を描画しました。ただし、フレームを最小化またはサイズ変更するたびに、それらは消えます。コードに何を追加すればよいかわかりません。

   public class ShapePanel extends JPanel implements ActionListener, MouseListener{

    int a,b,c,d;
    Graphics2D g2D;
    private Rectangle2D rect = new Rectangle2D(a,b,c-a,d-b);

    public ShapePanel(){

    addMouseListener(this);
    setLayout(new GridLayout());
}

    public void paintComponent(Graphics g) {

    g2D = (Graphics2D) g;
    g2D.draw(rect);
    repaint();

}


   //get methods for coordinates: MousePressed, MouseReleased
4

1 に答える 1

5

メソッドrepaint()の下で呼び出さないでください。paintComponentまた、メソッドsuper.paintComponent(g)で最初のことを行いますpaintComponent

更新: あなたのコードには多くのコンパイル エラーがあります。ただし、以下の変更点のリストを参照してください。

  • new Rectangle2D(a, b, c, d)Rectangle2D.Float(10, 10, 100, 100);とにかく、a、b、c、および d は何らかの値を持つ必要があります。そうでない場合、それらはすべてゼロであるため、長方形はありません
  • 定義とコンストラクターの両方で同じクラスに名前を付ける
  • 実装しmouseClickedmouseEnteredmouseExited
  • g2D.draw()から削除し、クラス内actionPerformedへの参照を保持しないでください。g2D

必要に応じて動作する完全なコードがあります。

于 2013-01-23T11:05:26.183 に答える