0

2 点を通る 1 本の線を引く方法の例を次に示します。

public void paintComponent(Graphics comp) {
   Graphics2D comp2D = (Graphics2D)comp; 
   comp2D.drawLine(0,60,100,60);
 }

ポイントのコンストラクターを渡そうとしていますが、メインで実行しようとすると、paintComponent を呼び出すときに comp に渡すべき値がわかりません

public class DrawLines{
      public void paintComponent(Graphics comp,int x0, int y0, int x1, int y1) {
           Graphics2D comp2D = (Graphics2D)comp; 
           comp2D.drawLine(x0,y0,x1,y1);
      }

     public static void main(String[]args){
          drawLine(?,100,200,200,300);
     }
}

で何を渡す必要がありますか?

4

2 に答える 2

4

Graphics(通常、Swing を使用する場合は インスタンスになります) オブジェクトが必要Graphics2Dです。これにより、実際に描画するコンテキストが得られます。メインクラスを見てみましょう... 一線を画したいのですが、何を描く必要がありますか? 描画するためにポップアップするウィンドウやキャンバスが魔法のように現れるわけではありません。そのようなものを設定する必要があります。

Java Swing チュートリアルを確認することをお勧めします。つまり、すでに Java にかなり精通している場合です。そうでない場合は、最初に Java の知識を適切なレベルに引き上げてください。

于 2011-10-26T15:43:09.267 に答える
3

クラスに 2 つの Point フィールド、または 4 つの int フィールド x1、y1、x2、y2 のいずれかを指定し、コンストラクターでこれらのフィールドの初期化に使用する値を渡し、最も重要なのは、これらに保持されている値を使用することです。描画を行うときのフィールド。

例えば、

import javax.swing.*;
import java.awt.*;

public class LinePanel extends JPanel {
   private Point p1; // java.awt.Point objects
   private Point p2;

   // TODO: create constructor that accepts
   // and updates the two points

   public void paintComponent(Graphics g) {

      super.paintComponent(g); // don't forget this!

      // TODO: Change the method below so that it uses
      // the two points to do the drawing with
      // rather than use hard coded magic numbers.
      g.drawLine(0, 0, 90, 90);
   }

   @Override
   public Dimension getPreferredSize() {
      return new Dimension(500, 500);
   }

   public static void main(String args[]) {
      JFrame jf = new JFrame();
      jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jf.add(new LinePanel()); // TODO: add parameters to constructor call.
      // jf.setSize(500, 500);
      jf.pack();
      jf.setVisible(true);
   }
}
于 2011-10-26T16:09:58.617 に答える