おえかき その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コレクションギャラリー サイト検索Y!ログール |