- 締切済み
複数線を引くには?
最近プログラミングを習いだし、1つずつ色々独学で学んでいて、 本に載っている範囲で勉強しているます。 ここから下のプログラミングでは1つしか線を1つしか引けないのですが、これを何個も線を引くようにするにはどうすればいいか教えてください! mport java.awt.*; import java.awt.event.*; import javax.swing.*; public class Challnege13 extends JApplet { private static final long serialVersionUID = 1L; int Px=0,Py=0; // 直前の位置。 int Cx,Cy; // 現在の位置。 JPanel p; // initメソッドの定義。 public void init() { // アプレットからコンテンツペインを取得。 Container c = this.getContentPane(); // コンテンツペインのレイアウトマネージャをBorderLayoutに設定。 c.setLayout(new BorderLayout()); // パネルを定義(匿名クラス)。 p = new JPanel() { /** * */ private static final long serialVersionUID = 1L; public void paintComponent(Graphics g) { super.paintComponent(g); // 直線描画。 if( (Px == 0)&&(Py == 0) ) { Px = Cx; Py = Cy; } g.drawLine(Px,Py,Cx,Cy); // 直前の位置を更新。 Px = Cx; Py = Cy; } }; // コンテンツペインに追加。 c.add(p,BorderLayout.CENTER); // イベントリスナを定義(匿名クラス)。 MouseAdapter ma = new MouseAdapter() { // mouseClickedメソッドの定義。 public void mouseClicked(MouseEvent e) { Cx = e.getX(); // クリックした点のx座標を取得する。 Cy = e.getY(); // クリックした点のy座標を取得する。 p.repaint(); } }; // イベントリスナの登録。 this.addMouseListener(ma); } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
クリックした順につなぐだけでいいのでしたら ArrayListなどでクリックしたポイントを覚えておいて paintComponentでその順に描画すれば良いでしょう Challnege13 のメンバーに ArrayList<Point> myList = new ArrayList<Point>(); を追加 mouseClickedハンドラで Point pt = new Point( Cx, Cy ); myList.add( pt ); を追加 paintComponentのオーバーライドの中身を int nLen = myList.Size(); if ( nLen < 1 ) { return; } Point[] pts = new Point[ nLen ]; myList.ToArray( pts ); for( int n = 1; n < nLen; n++ ) { g.drawLine( pts[n-1].x, pts[n-1].y, pts[n].x, pts[n].y ); } といった具合でしょう
お礼
ありがとうございます! 今も邁進しておりますので、またわからないことがあったらよろしくお願いしますw