@634

おえかき その5 直線たくさん(2)

Advertisement

コレクションクラスの利用

LineDataのオブジェクトを配列で管理してたけど、あんまヨクネーので。
コレクションクラスで管理することにスル。コレクションクラスの詳しい説明は、そのうちこっちで書きまふ(まだないけど。)

とりあえず、可変長の配列が使いたいから、Vectorにしよう。
つか、前回までのソースの配列をVectorのオブジェクトに置き換えるだけだから超簡単だ。
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Gr{
    public static void main(String args[]){
        mainFrame f = new mainFrame();
        f.setSize(400, 300);
        f.setTitle("タイトル");
        f.show();
    }
}

class mainFrame extends Frame implements WindowListener, MouseListener{
    int x, y;
    Vector v1 = new Vector();

    mainFrame(){
        addWindowListener(this);
        addMouseListener(this);
    }

    public void paint(Graphics g){
        for(int i = 0; i < v1.size(); i++){
            ((LineData)v1.elementAt(i)).Draw(g);
        }
    }

    public void mousePressed(MouseEvent e){
        x = e.getX();
        y = e.getY();
    }

    public void mouseReleased(MouseEvent e){
        v1.addElement(new LineData(x, y, e.getX(), e.getY()));
        repaint();
    }

    public void windowClosing(WindowEvent e){
        System.exit(0);
    }

    public void windowOpened(WindowEvent e){}
    public void windowClosed(WindowEvent e){}
    public void windowIconified(WindowEvent e){}
    public void windowDeiconified(WindowEvent e){}
    public void windowActivated(WindowEvent e){}
    public void windowDeactivated(WindowEvent e){}

    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mouseClicked(MouseEvent e){}
}

class LineData{
    private int sx, sy;
    private int ex, ey;

    public LineData(int x1, int y1, int x2, int y2){
        sx = x1;
        sy = y1;
        ex = x2;
        ey = y2;
    }

    public void Draw(Graphics g){
        g.drawLine(sx, sy, ex, ey);
    }
}
でけた。結果は、まぁ前回と同じ。

メモ。

「元に戻す」 → Vectorの一番後ろの要素を削除して、再描画。(簡易版)
//一番後ろの要素削除
v1.remove(v1.size()-1);
repaint();  //再描画

「画面消去」 → Vectorの要素全部消して、再描画。
//v1の要素全部削除
v1.removeAllElements();
repaint();  //再描画
そのうちメニューでもつくった時に実装予定。

Advertisement

ショートカット

634
このカテゴリのトップページに戻る
634labs
   UIコレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール