おえかき その3 直線を描くAdvertisementパッケージインポート
今回は簡単だ。直線をかくだけ。ウィンドウ上(フレーム内)でマウスのボタンおしたトコからー、ドラッグして話したトコまでの線を書く、と。
線を引くのはdrawLine()。drawLine()はGraphicsクラスだ。 Graphicsのパッケージはjava.awt.Graphicsだから、そーだ。 import java.awt.Frame; import java.awt.Grahpics;ダブってるから一個にしちゃお。 import java.awt.*;そしたら、あとでメニューとかつくるときもラクだ。 ワイルドカード使わないで全部指定する人ってなんなんだろ?ポリシー? リスナ追加
「マウスのボタン押した。」とか「マウスのボタン離した。」とかは、MouseListenerを使うぞー。
おし、とりあえずリスナー実装するぞ。のトコまで。処理はまだなしー。 import java.awt.*; import java.awt.event.*; 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{ mainFrame(){ addWindowListener(this); addMouseListener(this); } 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){} //MouseListenerのメソッドは全部実装 public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseClicked(MouseEvent e){} }実行しても、前回となにも変わらず。 描画処理
とりあえずー、今んトコは直線が一本だけ書ければいいや。
直線管理するクラス作って、んー、 考えた時点でなんとなくダメダメなので、作るのパスしよっと。 文句あるなら、続きんトコやれ。 …と思ったけどなんとなく作った。でもやっぱりダメだった。いや、やりたいコトはできてるんだけどね。構造がなっとくいかないような…。なんだろ。何かが違うな。
import java.awt.*;
import java.awt.event.*;
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{
LineData ld = new LineData();
mainFrame(){
addWindowListener(this);
addMouseListener(this);
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void mousePressed(MouseEvent e){
ld.setS(e.getX(), e.getY());
}
public void mouseReleased(MouseEvent e){
ld.setE(e.getX(), e.getY());
repaint();
}
public void paint(Graphics g){
ld.Draw(g);
}
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{
int sx, sy, ex, ey;
public LineData(){
sx = -1; sy = -1;
ex = -1; ey = -1;
}
public void setS(int x, int y){
sx = x; sy = y;
}
public void setE(int x, int y){
ex = x; ey = y;
}
public void Draw(Graphics g){
if(sx != -1 && sy != -1 && ex != -1 && ey != -1){
g.drawLine(sx, sy, ex, ey);
}
}
}
Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |